Python3.6中pd.read_csv未正确解析双引号包裹的CSV数据
解决pandas读取CSV时双引号字段未正确分割的问题
嘿,我懂你碰到的这个糟心问题——明明CSV里用双引号把字段包起来了,结果pandas愣是把整行内容都塞进第一列,其他列全是NaN,太闹心了。
问题根源
其实这是因为pandas默认情况下可能没正确识别到双引号是字段的边界标记。你的CSV数据里,From和Content字段都用双引号包裹着,但pandas没get到这层意思,就把逗号当成了普通字符,直接把整行当成了一个大字段。
快速解决方案
咱们只需要在pd.read_csv里明确指定quotechar参数,告诉pandas双引号是用来包裹字段的,再配合你已经加的skipinitialspace=True来忽略逗号后的空格,就能解决问题:
import pandas as pd # 明确指定双引号为字段包裹符 df = pd.read_csv('chat_daniel.csv', quotechar='"', skipinitialspace=True) print(df.head())
进阶调试方案
如果上面的代码还是没搞定,试试配合csv模块的常量来更精准地控制引号解析逻辑:
import pandas as pd import csv # 让pandas只解析那些包含特殊字符或被引号包裹的字段 df = pd.read_csv( 'chat_daniel.csv', quotechar='"', skipinitialspace=True, quoting=csv.QUOTE_MINIMAL )
这里csv.QUOTE_MINIMAL是最贴合你数据的选项——它只会处理那些被引号包裹或者包含分隔符的字段,正好匹配你的CSV结构(Date字段没引号,From和Content用引号包裹)。
要是还是不行,别忘了检查下CSV文件的编码,比如加上encoding='utf-8'或者encoding='latin-1'参数,有些老文件的编码可能不是默认的UTF-8。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

