python - 强制日期/日期时间到最近的星期五 Python 熊猫
问题描述
我有一个带有交易数据的熊猫数据框,每笔交易都有一个与之关联的日期。交易可以在一周中的任何一天发生,但我想将日期强制为同一周的星期五。换言之,星期二日期 (9-17-2019) 将显示为 9-20-2019。我想我以前做过,但是 a) 不记得如何 b) 不确定它是否是最简单/最有效的。
感谢您的帮助-这里是 Python 初学者。
解决方案
假设您的 DataFrame ( df ):
- 在Dat列中有源日期,
- 当前的星期五日期应保存在Dat2列中,
执行:
df['Dat2'] = df.Dat + pd.offsets.Week(n=0, weekday=6) - pd.DateOffset(2)
细节:
+ pd.offsets.Week(n=0, weekday=6)
- 转移到最近的周日(weekday=6),但如果当前工作日已经是周日,则不会发生转移。- pd.DateOffset(2)
- 向后移动 2 天。
测试:在 2019 年 9 月的最初几天,结果是:
Dat Dat2
0 2019-09-01 2019-08-30
1 2019-09-02 2019-09-06
2 2019-09-03 2019-09-06
3 2019-09-04 2019-09-06
4 2019-09-05 2019-09-06
5 2019-09-06 2019-09-06
6 2019-09-07 2019-09-06
7 2019-09-08 2019-09-06
8 2019-09-09 2019-09-13
9 2019-09-10 2019-09-13
10 2019-09-11 2019-09-13
11 2019-09-12 2019-09-13
12 2019-09-13 2019-09-13
13 2019-09-14 2019-09-13
14 2019-09-15 2019-09-13
15 2019-09-16 2019-09-20
所以:
- 2019-09-01(星期日)移(回)到2019-08-30,
- 下周末 (2-8.09) 当前星期五是2019-09-06 ,
等等。
推荐阅读
- python - 按子字符串聚合 json 元素
- mongodb - 如何为嵌入文档编写 mongo 查询
- sql - DB2 - 查询一次更新 10000 行
- postgresql - 将 CSV 文件数据导入 PostgreSQL 表自动化
- jquery - AJAX 调用仅运行一次,而 .click() 事件正常工作
- jquery - 将表格框更改为输入字段
- firebase - Geofire 是否支持离线持久化?
- c - 如何输入5个数字并检查它们在C中是奇数还是偶数
- html - 使用 Bootstrap 4 的 Bootstrap-select jQuery 插件不起作用
- c - 英特尔 AVX 的执行速度比标量代码慢