python - 将 datetime 日期转换为 bms 列中的月份,而不是用于索引
问题描述
我想从下面的格式更改我的日期列,让它看起来像一个工作月的开始。我不想让它成为一个索引,我想确保它保持为一列。任何帮助都是极好的!
date id
2000-11-18 A
2000-11-18 B
2000-11-18 C
2000-12-18 A
2000-12-18 B
2001-1-18 C
2001-1-18 A
期望营业月开始
date id
2000-11-1 A
2000-11-1 B
2000-11-1 C
2000-12-2 A
2000-12-2 B
2001-1-2 C
2001-1-2 A
解决方案
ADateOffset
可用于将时间戳回滚到适当的业务频率。
df['date'] -= pd.offsets.BMonthBegin()
它给:
date id
0 2000-11-01 A
1 2000-11-01 B
2 2000-11-01 C
3 2000-12-01 A
4 2000-12-01 B
5 2001-01-01 C
6 2001-01-01 A
这与您在评论中提供的代码一致。使用原始数据框,我可以执行以下操作:
>>> df.set_index(pd.DatetimeIndex(df['date'])).resample('BMS').first()
date id
date
2000-11-01 2000-11-18 A
2000-12-01 2000-12-18 A
2001-01-01 2001-01-18 C
推荐阅读
- android - 使用 recyclerview 从 Firebase 查询数据未显示结果
- python - 如果用户在 python Twilio IVR 中挂断,如何执行功能?
- c# - 通知 ActionBlock 完成到另一个类
- websocket - 为股票报价创建实时警报
- visual-studio-code - VSCode API 获取语言注释分隔符
- python - 返回绝对图标图像文件路径
- javascript - 如何使用承诺使循环不会挂起
- python-3.x - 我需要从该 url 从表中提取数据并将它们放入表中并导出到 csv
- vba - excel VBA如何在函数中返回2个不同的数组
- python - 如何使用python从字符串中删除.ds模式字符串