You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python批量按日期切片DataFrame并导出多个CSV文件的方法

批量处理月度DataFrame切片与导出

当然可以用循环替代手动操作,既高效又能避免手动输入日期的错误,以下是具体实现方法:

一、批量生成月度子DataFrame

首先请确保Value_Date列是datetime格式,如果尚未转换,先执行这一步:

import pandas as pd
merged_df['Value_Date'] = pd.to_datetime(merged_df['Value_Date'])

方案1:按年月分组(最省心高效)

利用pandas的groupby直接按年份和月份拆分数据,无需手动编写日期范围:

# 按年月分组,得到(年份月份, 对应子DataFrame)的迭代器
monthly_groups = merged_df.groupby([merged_df['Value_Date'].dt.year, merged_df['Value_Date'].dt.month])

# 将每个月的DataFrame存入字典,键为"Jan21"这类格式,方便后续导出
monthly_dfs = {}
for (year, month), sub_df in monthly_groups:
    # 生成月份缩写+年份后两位的键名,例如2021年1月→"Jan21"
    month_key = pd.to_datetime(f"{year}-{month}").strftime("%b%y")
    monthly_dfs[month_key] = sub_df

方案2:自定义日期范围循环(精准控制时间区间)

如果需要严格限定2021年1月至2023年2月的范围,可手动生成该区间内的所有月份,再循环筛选:

# 生成2021-01到2023-02的每月第一天(MS代表Month Start)
target_months = pd.date_range(start='2021-01-01', end='2023-02-01', freq='MS')

monthly_dfs = {}
for month_start in target_months:
    # 获取当月最后一天
    month_end = month_start + pd.offsets.MonthEnd(1)
    # 筛选当月数据的掩码
    date_mask = (merged_df['Value_Date'] > month_start) & (merged_df['Value_Date'] <= month_end)
    monthly_df = merged_df.loc[date_mask]
    # 生成键名
    month_key = month_start.strftime("%b%y")
    monthly_dfs[month_key] = monthly_df

二、批量导出为CSV

有了monthly_dfs字典后,直接循环即可批量导出所有子DataFrame:

output_filepath_csv = "你的输出文件夹路径/"  # 注意路径结尾需加斜杠

for month_name, sub_df in monthly_dfs.items():
    csv_filename = f"{month_name}.csv"
    sub_df.to_csv(output_filepath_csv + csv_filename, index=False)

注意:你原代码中apr_2021的结束日期写错为2021-3-31,使用上述循环方法可避免这类手动输入错误。

内容的提问来源于stack exchange,提问作者selereth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 21:45:29