如何用循环按日期拆分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
相关产品推荐
相关产品推荐

