使用pandas.read_csv读取CSV文件出现列合并为单列如何解决
问题原因
- 你使用的
pandas.read_csv默认以逗号作为字段分隔符,但从你输出的列名拼接格式可以判断,这份CSV实际采用分号;作为分隔符,这是所有字段被识别为1列的核心原因 - 字段外包裹的双引号属于CSV标准的引用标记,本身是合法格式,只是因为分隔符识别错误,才没有被正常解析处理
解决方案
直接在读取文件时添加分隔符、引用符两个参数即可正确解析,修改后的代码如下:
import pandas as pd import sqlite3 from pandas.io import sql # 新增sep指定分号为分隔符,quotechar指定双引号为引用符 BANK_FULL = pd.read_csv('../csv/bank-full.csv', encoding = 'utf-8', sep=';', quotechar='"') print(BANK_FULL.columns)
参数说明
sep=';':替换默认的逗号分隔规则,用分号拆分不同字段quotechar='"':指定双引号为字段的包裹标记,pandas会自动去除字段外层的双引号,不需要额外做字符串清洗
如果遇到部分字段引号不规范的特殊情况,可以额外导入csv模块,添加quoting=csv.QUOTE_MINIMAL参数适配:
import pandas as pd import csv BANK_FULL = pd.read_csv('../csv/bank-full.csv', encoding = 'utf-8', sep=';', quotechar='"', quoting=csv.QUOTE_MINIMAL)
运行修改后的代码后,即可输出17个独立的列名,完成正常拆分。
内容的提问来源于stack exchange,提问作者ccookiee
相关产品推荐
相关产品推荐

