如何用Pandas创建3天滑动日期窗口?是否需用循环?
用Pandas实现滑动日期窗口,无需循环!
当然可以用Pandas轻松实现这种每日滑动的3天窗口,完全不用编写手动循环——利用Pandas的矢量化日期操作就能高效完成。
具体实现步骤:
- 先生成所有窗口的起始日期序列:我们需要从
2019-06-01开始,每天递增,直到2019-06-29(因为最后一个窗口的结束日期是2019-07-01,起始日期加2天正好得到它)。 - 再通过起始日期计算对应的结束日期:给每个起始日期加上2天即可。
- 最后将起始和结束日期配对成你需要的元组列表。
示例代码:
import pandas as pd # 生成所有窗口的起始日期(每日递增) start_dates = pd.date_range(start='2019-06-01', end='2019-06-29', freq='D') # 计算每个窗口的结束日期(起始日期+2天) end_dates = start_dates + pd.Timedelta(days=2) # 转换为字符串格式并配对成元组列表 sliding_windows = list(zip(start_dates.strftime('%Y-%m-%d'), end_dates.strftime('%Y-%m-%d')))
验证输出:
运行后,sliding_windows的前几个元素就是你想要的结果:
[('2019-06-01', '2019-06-03'), ('2019-06-02', '2019-06-04'), ('2019-06-03', '2019-06-05'), ..., ('2019-06-29', '2019-07-01')]
为什么不用循环?
Pandas的日期操作是矢量化的,相比Python循环,它在处理大范围日期时速度快得多,代码也更简洁易读。如果你的日期范围很大,这种方法的优势会非常明显。
内容的提问来源于stack exchange,提问作者piyush daga
相关产品推荐
相关产品推荐

