小编典典

找到月底的Pandas DataFrame系列

python

我在DataFrame中有一个系列,最初是作为对象读取的,然后需要将其转换为yyyy-mm-dd形式的日期,其中dd是月末。

举例来说,我将DataFrame df的Date列作为对象:

...      Date    ...
...     200104   ...
...     200508   ...

全部说完之后我想要的是一个日期对象:

...      Date    ...
...  2001-04-30  ...
...  2005-08-31  ...

这样df [‘Date’]。item()返回

datetime.date(2001, 04, 30)

我使用以下代码几乎可以到达那里,但是我所有的日期都是在月初,而不是月底。请指教。

df['Date'] = pd.to_datetime(df['Date'], format="%Y%m").dt.date

注意:我已经导入了Pandas ad pd,日期时间为dt


阅读 225

收藏
2020-12-20

共1个答案

小编典典

您可以使用pandas.tseries.offsets.MonthEnd

from pandas.tseries.offsets import MonthEnd

df['Date'] = pd.to_datetime(df['Date'], format="%Y%m") + MonthEnd(1)


1in”MonthEnd仅指定将一个步骤向前移动到下一个月底的日期。(0在您的情况下,也可以使用空白或将其保留为空白)。如果您需要下个月的最后一天,则可以使用MonthEnd(2),等等。它应该可以在任何月份使用,因此您无需知道月份中的天数或类似的数字。更多偏移信息可在文档中找到。

用法示例和输出:

df = pd.DataFrame({'Date': [200104, 200508, 201002, 201602, 199912, 200611]})
df['EndOfMonth'] = pd.to_datetime(df['Date'], format="%Y%m") + MonthEnd(1)

     Date EndOfMonth
0  200104 2001-04-30
1  200508 2005-08-31
2  201002 2010-02-28
3  201602 2016-02-29
4  199912 1999-12-31
5  200611 2006-11-30
2020-12-20