pd.read_csv设置sep为";",棘手数据集处理求助
可行解决方案
- 方案一:匹配Excel文本分列逻辑
直接指定分隔符为;,同时配置引号处理参数,让pandas正确识别被双引号包裹的字段:
import pandas as pd import csv df = pd.read_csv('你的文件路径.csv', sep=';', quotechar='"', quoting=csv.QUOTE_ALL, engine='python')
这个配置会把所有被"包裹的内容视为单个字段,忽略字段内部的;,和Excel文本分列的逻辑完全一致,应该能直接得到19列的结果。
- 方案二:手动预处理文本格式
如果文件格式存在特殊异常(比如首尾多余引号、分隔符与引号组合混乱),可以先读取原始内容做清洗,再导入pandas:
import pandas as pd from io import StringIO # 读取原始文件内容 with open('你的文件路径.csv', 'r', encoding='utf-8') as f: raw_content = f.read() # 替换分隔符并清理引号:把";"换成无冲突的分隔符(比如|),再去掉首尾引号 cleaned_content = raw_content.replace('";"', '|').strip('"') # 用处理后的内容生成DataFrame df = pd.read_csv(StringIO(cleaned_content), sep='|')
- 方案三:用原生csv模块读取后转DataFrame
Python标准库的csv模块对带引号的分隔字段处理更稳定,先读取再转成DataFrame:
import pandas as pd import csv row_list = [] with open('你的文件路径.csv', 'r', encoding='utf-8') as f: # 配置分隔符和引号规则 csv_reader = csv.reader(f, delimiter=';', quotechar='"') for row in csv_reader: row_list.append(row) # 转成DataFrame,第一行作为列名 df = pd.DataFrame(row_list[1:], columns=row_list[0])
内容的提问来源于stack exchange,提问作者HuiM
相关产品推荐
相关产品推荐

