Pandas导入多Sheet的Excel,添加工作表名列后按列数分组拼接DataFrame
你可以按列数对所有DataFrame分组后拼接,完整实现代码如下:
import pandas as pd from collections import defaultdict # 你已有的处理逻辑 my_dict = pd.read_excel('test.xlsx', header=0, sheet_name=None) for key, df in my_dict.items(): df['sheet_name'] = key # 按列数分组 group_by_colcnt = defaultdict(list) for df in my_dict.values(): # 以DataFrame的列数为分组键 col_count = df.shape[1] group_by_colcnt[col_count].append(df) # 对每个分组内的DataFrame进行拼接,得到最终结果字典 concat_result = { col_cnt: pd.concat(df_list, ignore_index=True) for col_cnt, df_list in group_by_colcnt.items() }
你可以直接通过列数取值获取拼接后的DataFrame:
- 原数据为1列的工作表,新增sheet_name列后总列数为2,对应结果为
concat_result[2] - 原数据为2列的工作表,新增sheet_name列后总列数为3,对应结果为
concat_result[3]
如果需要把不同分组的结果导出为单独的Excel文件,可以追加以下代码:
for col_cnt, df in concat_result.items(): df.to_excel(f"合并结果_总列数{col_cnt}.xlsx", index=False)
内容的提问来源于stack exchange,提问作者Steven González
相关产品推荐
相关产品推荐

