datetime - Pandas 上个月开始

标签 datetime pandas

给定一个数据框:

df = pd.DataFrame({'c':[0,1,1,2,2,2],'date':pd.to_datetime(['2016-01-01','2016-02-01','2016-03-01','2016-04-01','2016-05-01','2016-06-05'])})

如何让每个日期的上个月开始?以下不适用于 6/5 并且有一些额外的时间部分。
pd.to_datetime(df['date'], format="%Y%m") + pd.Timedelta(-1,unit='M') + MonthBegin(0)

编辑

我有一个解决方法(后退 2 步,前进 1 步):
(df['date']+ pd.Timedelta(-2,unit='M')+ MonthBegin(1)).dt.date

不喜欢这个。应该有更好的东西。

最佳答案

你可以先减去MonthEnd到上个月的月底,然后 MonthBegin到上个月的开始:

df['date'] - pd.offsets.MonthEnd() - pd.offsets.MonthBegin()

结果输出:
0   2015-12-01
1   2016-01-01
2   2016-02-01
3   2016-03-01
4   2016-04-01
5   2016-05-01

关于datetime - Pandas 上个月开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41528970/

相关文章:

ruby-on-rails - 评估日期是否不是模型中的过去日期之一——Ruby on Rails

python - 现在与出生日期之间的年、月、日、分钟差异

python - 计算不包含某些字符串 Pandas DataFrames 的行

python - Pandas:重复数据删除时如何创建 "master"记录

python - 如何从 pandas 的列表中向 Dataframe 添加行?

python - 正则表达式 X 但不是 Y、或 Z、Pandas、Python

PHP 将两个 DateInterval 对象添加在一起

python - 如何将一个 Pandas 数据框列与日期结合,另一个与时间结合?

java - 日期时区转换

python - 如何连接 Pandas 中具有不同列数的两个帧?