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

如何用循环按日期拆分DataFrame并逐段写入Excel?

可以实现,具体代码如下

你可以借助pandas.ExcelWriter来实现逐段写入Excel的需求,核心是跟踪每次写入的起始行位置,避免内容覆盖。以下是完整的实现代码:

import pandas as pd

# 初始化你的DataFrame
data = {'Join_Date': ['2023-01', '2023-01', '2023-02', '2023-03'],
        'Name': ['Tom', 'Amy', 'Peter', 'Nick']}
df = pd.DataFrame(data)

# 用ExcelWriter操作Excel文件,上下文管理器自动处理文件关闭
with pd.ExcelWriter('按日期拆分输出.xlsx') as writer:
    start_row = 0  # 记录当前写入的起始行
    # 遍历每个唯一的入职日期及对应的数据
    for date in df['Join_Date'].unique():
        subset_df = df[df['Join_Date'] == date]
        
        # 1. 写入日期标题
        writer.sheets['Sheet1'].write(start_row, 0, date)
        start_row += 1  # 标题占1行,下一行开始写数据
        
        # 2. 写入该日期对应的表格数据(不包含索引列)
        subset_df.to_excel(writer, sheet_name='Sheet1', startrow=start_row, index=False)
        
        # 3. 更新起始行:数据行数(含表头) + 预留2空行作为分隔
        start_row += len(subset_df) + 2

代码说明:

  • pd.ExcelWriter允许你多次写入同一个Excel文件,不会覆盖之前的内容
  • start_row变量用来控制每次写入的位置,确保每个日期块按顺序排列
  • 先写入日期作为标题,再写入对应的数据子集,最后预留空行分隔不同日期的内容,和你预期的效果一致

如果你已经有了df_split这个拆分好的列表,也可以这样调整循环:

with pd.ExcelWriter('按日期拆分输出.xlsx') as writer:
    start_row = 0
    dates = df['Join_Date'].unique()
    for idx, subset_df in enumerate(df_split):
        date = dates[idx]
        # 后续写入逻辑和上面完全一致
        writer.sheets['Sheet1'].write(start_row, 0, date)
        start_row += 1
        subset_df.to_excel(writer, sheet_name='Sheet1', startrow=start_row, index=False)
        start_row += len(subset_df) + 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:06:27