给定一个数据帧:
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'])})
Run Code Online (Sandbox Code Playgroud)
如何从上个月开始每个日期?以下不适用于6/5,并且有一些额外的时间部分.
pd.to_datetime(df['date'], format="%Y%m") + pd.Timedelta(-1,unit='M') + MonthBegin(0)
Run Code Online (Sandbox Code Playgroud)
编辑
我有一个解决方法(后退2步,前进1步):
(df['date']+ pd.Timedelta(-2,unit='M')+ MonthBegin(1)).dt.date
Run Code Online (Sandbox Code Playgroud)
不喜欢这个.应该有更好的东西.
您可以先减去MonthEnd前一个月的末尾,然后MonthBegin到达上个月的开头:
df['date'] - pd.offsets.MonthEnd() - pd.offsets.MonthBegin()
Run Code Online (Sandbox Code Playgroud)
结果输出:
0 2015-12-01
1 2016-01-01
2 2016-02-01
3 2016-03-01
4 2016-04-01
5 2016-05-01
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3283 次 |
| 最近记录: |