如何解决Pandas导出CSV及Dataframe中列名显示不全问题?
解决Pandas DataFrame列名显示/导出截断问题
先确认核心问题:列名是真的丢失还是仅显示异常
直接打印所有列名,验证DataFrame中列名是否实际完整:
print(df2.columns.tolist())
- 如果输出列名完整,说明只是显示设置或导出工具的问题;
- 如果输出列名本身就截断,要排查合并过程中列名被修改的原因。
针对显示不全的解决步骤
- 调整Pandas列头专属显示设置(你之前可能遗漏了这个)
# 取消列名显示宽度限制 pd.set_option('display.max_colheader_width', None) # 确保所有列完整显示,不折叠 pd.set_option('display.max_columns', None) # 禁止自动换行折叠内容 pd.set_option('display.expand_frame_repr', False)
display.max_colheader_width是专门控制列头宽度的参数,和你之前设置的display.max_colwidth(控制单元格内容)是独立的,仅设置后者无法解决列头截断问题。
- 检查列名是否含隐藏字符
合并后的列名如果带有换行符、制表符等隐藏字符,也会导致显示异常:
# 排查含换行符的列名 print([col for col in df2.columns if '\n' in col]) # 替换所有隐藏字符 df2.columns = df2.columns.str.replace('\n', ' ').str.replace('\t', ' ')
针对CSV导出的问题
- 确认列名实际完整后,导出时指定编码避免乱码截断:
df2.to_csv(r"D:\New_folder\New_folder\MWD_AND_EXP.csv", encoding='utf-8-sig', index=False)
- 不要用Excel直接判断CSV是否截断——Excel默认列宽有限,会自动隐藏部分内容,改用文本编辑器(如Notepad++)打开CSV文件查看列名完整性;如果Excel显示不全,手动调整列宽即可。
合并过程中列名被修改的排查
如果打印列名时发现内容确实丢失,检查合并逻辑:
- 确认合并时是否误修改了列名,比如
rename()操作写错了字段,或合并后做了不必要的列名截断; - 检查原DataFrame与被合并DataFrame的列名,是否存在特殊字符导致合并时被自动截断;
- 用
pd.merge()时,重复列名只会被添加_x/_y后缀,不会截断,重点排查合并前后的列名处理代码。
内容的提问来源于stack exchange,提问作者Abboud
相关产品推荐
相关产品推荐

