求助:使用Pandas导入CSV文件时无法正确拆分列
解决Pandas读取CSV时列合并的问题
以下是几种针对性的解决方法,按优先级尝试:
- 确认实际分隔符
很多CSV文件表面标注是逗号分隔,但实际用的是分号(;)、制表符(\t)或者其他符号(比如欧洲地区的CSV常用分号)。先直接打开CSV文件(用记事本、VS Code等)查看第一行的字段分隔方式:
- 如果是分号,执行:
df = pd.read_csv("Test.csv", delimiter=';')
- 如果是制表符,执行:
df = pd.read_csv("Test.csv", delimiter='\t')
- 处理带空格的逗号分隔
如果分隔符确实是逗号,但字段间带有空格(比如A, B, C),需要跳过逗号后的空格:
df = pd.read_csv("Test.csv", delimiter=',', skipinitialspace=True)
- 处理含逗号的字段(带引号包裹)
如果CSV里的字段本身包含逗号,且用双引号包裹(比如"Name, Age", City),需要指定引号识别参数:
df = pd.read_csv("Test.csv", delimiter=',', quotechar='"')
- 让Pandas自动检测分隔符
使用正则表达式匹配任意形式的分隔(包括带空格的逗号),配合Python引擎提升兼容性:
df = pd.read_csv("Test.csv", sep=r',\s*', engine='python')
- 排查编码问题
如果文件编码异常,也会导致分隔符识别错误,尝试指定编码格式:
df = pd.read_csv("Test.csv", delimiter=',', encoding='utf-8') # 若utf-8无效,试试latin-1 df = pd.read_csv("Test.csv", delimiter=',', encoding='latin-1')
- 查看原始文件内容
如果以上方法都无效,先打印文件第一行确认格式:
with open("Test.csv", 'r') as f: print(f.readline())
根据输出的实际内容,再调整read_csv的参数。
内容的提问来源于stack exchange,提问作者Seerens
相关产品推荐
相关产品推荐

