如何将同一Excel的多个工作表合并为单文件并新增原工作表名列
当然可以实现,你只需要对现有代码做小幅调整即可。
pd.read_excel指定sheet_name=None时会返回一个字典,键就是工作表名称,值为对应工作表的DataFrame结构数据,你可以利用这个特性轻松追加原工作表标记列。
方式1:直接利用concat的索引特性(改动最小)
import pandas as pd # 读取所有工作表 df_dict = pd.read_excel('multiple_sheets.xlsx', sheet_name=None) # 合并时将工作表名作为索引层,再转为普通列 single_file = pd.concat(df_dict, names=['sheet_name']).reset_index(level=0).reset_index(drop=True) # 导出时取消默认的索引列 single_file.to_csv('single_file.csv', index=False)
方式2:遍历工作表追加列后合并(可读性更高、方便自定义逻辑)
import pandas as pd df_list = [] # 遍历所有工作表,逐表追加标记列 for sheet_name, df in pd.read_excel('multiple_sheets.xlsx', sheet_name=None).items(): # 新增列存储原工作表名,你可以自行修改列名 df['sheet_name'] = sheet_name df_list.append(df) # 合并所有表 single_file = pd.concat(df_list, ignore_index=True) single_file.to_csv('single_file.csv', index=False)
两种方式效果完全一致,最终输出的csv中会新增名为sheet_name的列,每行对应数据来源的原工作表名称。
内容的提问来源于stack exchange,提问作者user15240243
相关产品推荐
相关产品推荐

