如何将按特定值拆分后的DataFrame导出至Excel多工作表?
拆分DataFrame并导出到Excel/CSV多工作表的解决方案
问题描述
用户拥有大型数据集,需求为每当y列出现0.0001或0.0002时拆分DataFrame,示例数据及期望结果如下:
原数据集
x y 2.32 0.0001 2.50 0.0034 3.01 0.0045 6.05 0.0002 1.05 0.0100 6.10 0.0001 6.22 0.0022
期望拆分结果
x y 2.32 0.0001 2.50 0.0034 3.01 0.0045 x y 6.05 0.0002 1.05 0.0100 x y 6.10 0.0001 6.22 0.0022
同时需要将拆分后的结果导出到Excel/CSV文件的不同工作表中,用户已尝试拆分代码但存在逻辑问题,且不清楚导出操作。
修正DataFrame拆分代码
你当前的拆分代码存在两处问题:
- 用索引
df2[1]定位列错误,应使用列名df2['y'] eq(str(0.0001) or str(0.0002))逻辑错误,or在此只会返回第一个真值,且数值列无需转字符串,应改用isin()匹配多个目标值
修正后的拆分代码如下:
# 生成拆分分组标识:每当y列出现0.0001/0.0002时,分组编号自动+1 group_ids = df2['y'].isin([0.0001, 0.0002]).cumsum() # 按分组拆分DataFrame,存入字典 df_list = {f'df_{i}': g.reset_index(drop=True) for i, g in df2.groupby(group_ids)}
导出到Excel(多工作表)
使用pandas.ExcelWriter可将多个DataFrame写入同一份Excel文件的不同工作表:
import pandas as pd # 创建Excel写入对象 with pd.ExcelWriter('拆分结果.xlsx') as writer: # 遍历字典中的每个DataFrame,写入对应工作表 for sheet_name, df in df_list.items(): df.to_excel(writer, sheet_name=sheet_name, index=False)
- 工作表名称会沿用字典的键(如
df_1、df_2) index=False表示不导出DataFrame的索引列
导出到CSV(多个独立文件)
如果需要导出为独立的CSV文件,直接遍历字典逐个导出即可:
for file_name, df in df_list.items(): df.to_csv(f'{file_name}.csv', index=False)
执行后会生成df_1.csv、df_2.csv等多个独立文件。
内容的提问来源于stack exchange,提问作者PandaNoob
相关产品推荐
相关产品推荐

