pandas使用read_csv读取本地CSV文件所有列显示为一列如何解决?
解决pandas读取本地CSV列不拆分的方案
- 先排查文件真实内容,确认不可见字符是否异常
先通过原生文件读取打印前几行的原始内容,确认分隔符、换行符是否符合预期:
根据输出结果判断:如果分隔符不是普通逗号、每行没有正常的with open('C:\\analyst\\Diamonds.csv', 'r', encoding='utf-8') as f: for _ in range(3): # repr会输出字符的原始编码,能看到不可见的换行符、BOM头等 print(repr(f.readline()))\n换行符、开头有\ufeff等BOM标识,对应调整下方参数即可。 - 方案1:调整read_csv的编码、换行符参数
本地文件容易出现编码、换行符和URL版本不一致的问题,可依次尝试以下参数组合:# 适配带BOM的utf-8文件 diam = pd.read_csv('C:\\analyst\\Diamonds.csv', sep=',', encoding='utf-8-sig')# 适配Windows默认GBK编码文件 diam = pd.read_csv('C:\\analyst\\Diamonds.csv', sep=',', encoding='gbk')# 明确指定行结束符,适配跨系统传输导致的换行符异常 diam = pd.read_csv('C:\\analyst\\Diamonds.csv', sep=',', lineterminator='\n') - 方案2:兜底手动拆分列
如果以上参数调整都无效,可先按单列读取再手动拆分:# 先忽略表头,全量按单列读取 df = pd.read_csv('C:\\analyst\\Diamonds.csv', header=None) # 按逗号拆分单列为多列 df = df[0].str.split(',', expand=True) # 第一行设为列名,从第二行开始作为正式数据 df.columns = df.iloc[0] df = df[1:].reset_index(drop=True)
内容的提问来源于stack exchange,提问作者MrUser
相关产品推荐
相关产品推荐

