Python使用read_csv导入含重复列名CSV时如何避免自动添加后缀?
解决方案
重复列名自动追加.1/.2后缀的问题可通过以下两种方案解决:
- 方案一:pandas 1.3及更早版本可直接通过
mangle_dupe_cols参数关闭自动重命名逻辑:
import pandas as pd df = pd.read_csv( r'C:\Users\agns1\Downloads\treatment1.csv', encoding="ISO-8859-1", sep='|', mangle_dupe_cols=False )
- 方案二:适配所有pandas版本的通用方案,手动读取原始列名再赋值,完全绕开pandas的自动重命名逻辑:
import pandas as pd # 仅读取表头行获取原始列名 col_names = pd.read_csv( r'C:\Users\agns1\Downloads\treatment1.csv', encoding="ISO-8859-1", sep='|', nrows=0 ).columns # 读取实际数据,跳过表头行 df = pd.read_csv( r'C:\Users\agns1\Downloads\treatment1.csv', encoding="ISO-8859-1", sep='|', skiprows=1, header=None ) # 直接赋值原始列名,支持重复列名存在 df.columns = col_names
原有代码异常原因
你之前的写法会把第一行表头的数据类型同步给所有数据列,导致数值类列被强制转为字符串类型,就会出现导入结果和Excel原文件不一致的问题。
内容的提问来源于stack exchange,提问作者Eliza R
相关产品推荐
相关产品推荐

