如何用pandas按日期列7天范围分组拆分26.4万行大型DataFrame?
按7天区间拆分DataFrame导出CSV的实现方案
你原来的代码是按单个CreatedDate的值分组,所以拆分的是单日数据,只需要将分组键替换为7天区间的唯一标识即可,完整可运行代码如下:
import pandas as pd # 第一步:将字符串格式的CreatedDate转为datetime日期类型,方便后续时间计算 options_flow['CreatedDate'] = pd.to_datetime(options_flow['CreatedDate'], format="%m/%d/%Y") # 第二步:取数据集的最早日期作为计算7天区间的基准 earliest_date = options_flow['CreatedDate'].min() # 第三步:按7天区间分组,日期与基准的天数差整除7,相同结果属于同一个7天区间 for group_id, group_df in options_flow.groupby((options_flow['CreatedDate'] - earliest_date).dt.days // 7): # 取当前分组的起止日期生成文件名,方便识别文件覆盖的时间范围 start_date = group_df['CreatedDate'].min().strftime('%Y%m%d') end_date = group_df['CreatedDate'].max().strftime('%Y%m%d') # 导出CSV,index=False避免输出多余的行索引列 group_df.to_csv(f"7days_{start_date}_to_{end_date}.csv", index=False)
可选调整项
- 如果你需要按自然周(周一到周日)拆分,而非从数据集最早日期开始顺推7天,只需要把groupby的条件替换为
options_flow['CreatedDate'].dt.isocalendar().week即可,pandas会自动按自然周数分组。 - 如果不需要在文件名里标注起止日期,也可以直接用分组序号命名,比如
f"7days_part_{group_id + 1}.csv"。 - 该方案对26万行的数据集处理效率很高,不会有性能问题。
内容的提问来源于stack exchange,提问作者A l w a y s S u n n y
相关产品推荐
相关产品推荐

