如何处理表头逗号、数据行TAB分隔的CSV文件生成Pandas DataFrame?
解决CSV表头与数据行分隔符不同的问题
给你几个可行的解决办法:
办法一:指定Python引擎读取
默认的C引擎对制表符的处理有时会有局限,换成Python引擎能解决大部分兼容问题,还能处理数据行里可能带的空格:
import pandas as pd df = pd.read_csv( 'csvfile.csv', names=['Code', 'Name'], header=None, skiprows=1, sep='\t', engine='python', skipinitialspace=True # 如果数据行制表符后有空格,打开这个选项 )
办法二:手动跳过表头行再读取
直接用文件对象跳过第一行,剩下的内容交给read_csv处理,这种方式更直观:
import pandas as pd with open('csvfile.csv', 'r') as f: next(f) # 跳过第一行的表头 df = pd.read_csv(f, names=['Code', 'Name'], header=None, sep='\t')
办法三:如果需要解析原表头(可选)
要是之后需要用到原表头的内容,可以先单独读取表头行,再读取数据:
import pandas as pd # 先读取并解析表头 with open('csvfile.csv', 'r') as f: header_line = next(f).strip() original_headers = header_line.split(',') # 用逗号拆分表头 # 再读取数据行 df = pd.read_csv( 'csvfile.csv', names=original_headers, header=None, skiprows=1, sep='\t' )
原代码失效的可能原因
- 默认的C引擎对制表符的识别不够灵活,遇到数据里的特殊字符容易出错
- 数据行的制表符可能混有空格,导致分隔符匹配失败
- 文件编码问题(可以尝试加上
encoding='utf-8'或encoding='gbk'参数)
内容的提问来源于stack exchange,提问作者BlakeB9
相关产品推荐
相关产品推荐

