python - 查找 Pandas DataFrame 系列的月底

标签 python date datetime pandas

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

例如,我有 DataFrame dfDate 作为对象:

...      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 (pd) 和 datetime (dt)

最佳答案

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

from pandas.tseries.offsets import MonthEnd

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

MonthEnd 中的0 只是指定前滚到给定月份的月底。请注意,如果我们使用 MonthEnd(1),那么我们将得到下一个日期,即月底。 如果您想要下个月的最后一天,则可以添加一个额外的 MonthEnd(1) 等。这应该适用于任何月份,因此您不需要知道天数在一个月内,或类似的事情。更多偏移信息可以在 documentation 中找到。 .

示例用法和输出:

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

关于python - 查找 Pandas DataFrame 系列的月底,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37354105/

相关文章:

python - Pandas 数据框到数量总和的重复矩阵

带有 if block 的 Python 单行代码

java计算怀孕算法

javascript - 如何显示日期?我只想要实时日期

python - 如何使用 burp 套件代理 HTTPS 流量?

python - 访问网络服务

javascript - 当天数增加时增加下个月的 Javascript 日期对象?

spring - 无法转换 1985-04-12T23 :20 into java. util.Date

pandas - 如何将 Pandas 日期时间转换为 pandas 中的整数?

JavaScript 日期 - getMinutes() 和 getUTCMinutes() 之间有什么区别?