读取多Sheet Excel至Pandas时,如何清理列名空格避免重复列?
解决多Sheet Excel导入Pandas时列名空格导致重复列的问题
嘿,这个列名带空格的坑我可太熟了!其实不用等到合并后再处理,我们完全可以在读取每个Sheet的时候就把列名清理干净,这样合并的时候自然就不会出现重复列了。
具体思路
pd.read_excel当你传入多个sheet名时,返回的是一个字典(key是sheet名称,value是对应Sheet的DataFrame)。我们只需要遍历这个字典,对每个Sheet的DataFrame先清理列名,再进行合并操作。
完整代码示例
import pandas as pd # 1. 读取Excel文件,得到包含多个Sheet的字典 df_dict = pd.read_excel("你的文件路径", sheet_name=['TEST', 'TEST2', 'TEST3']) # 2. 遍历字典,清理每个Sheet的列名 cleaned_df_dict = {} for sheet_name, df in df_dict.items(): # 对列名执行strip(),去除前后空格 df.columns = df.columns.str.strip() cleaned_df_dict[sheet_name] = df # 3. 合并处理后的DataFrame df = pd.concat(cleaned_df_dict.values(), axis=0, sort=False) df = df.reset_index(drop=True) # 加上drop=True可以去掉冗余的原索引列,结果更干净
为什么这样更高效?
如果等到合并后再处理,你会发现存在重复列(比如ID3和ID3 ),这时候还要额外做列名清理+合并重复列的操作;而提前在每个Sheet的DataFrame阶段处理,合并时列名完全一致,一步到位就能得到干净的结果。
额外补充
如果你的列名中间也有空格需要处理(不只是前后),可以把str.strip()换成str.replace(" ", "")来移除所有空格;如果只想去除开头/结尾的空格,str.lstrip()或str.rstrip()也能满足需求,根据你的实际情况调整就行。
内容的提问来源于stack exchange,提问作者Matteo
相关产品推荐
相关产品推荐

