Pandas.read_csv处理“”内的异常

时间:2018-02-12 13:20:57

标签: python pandas csv

我已经下载了一个大的csv文件,它使用“,”作为分隔符(不带“”)。当前代码似乎在某些行中正确读取,但有些不是由“,”拆分,而是所有内容都插入到第一列中...... 问题似乎是,对于某些行,在Text列中还有其他“,”因此为什么在第3行的Dr和after ....之前有一个“引用”

有没有办法拆分文件以获得所需的输出,同时保持文本列中两个“”之间的“,”?

示例CSV文件名= TwitterData_2017.csv:

Username, date, retweets, favorites, text
,2017-01-02,0,0,History makes this very clear ....
,2017-01-02,0,0,S&P reaches new heights ....
,2017-01-02,0,0,"Dr Pepper ,Snapple Group Projection ...."
,2017-01-02,0,0,S&P is going strong ....

代码:

import pandas as pd
import numpy as np
rawData = pd.read_csv('TwitterData_2017.csv', sep=",", quotechar='"')
print(rawData.head(n=4))

输出:

    Username    Date        Retweets    favorites    text
    NaN         2017-01-02  0           0            History makes this very clear ....
    NaN         2017-01-02  0           0            S&P reaches new heights ....
   ,2017-01-02,0,0,"Dr Pepper ,Snapple Group Projection ...."
    NaN         2017-01-02  0           0            S&P is going strong ....

正如您所看到的,代码似乎适用于1,2和2行。 4但是在第3行失败。这似乎是由于该列“由于存在额外的”而在“开头和结尾”这一事实引起的。“

我正在使用Python 3并通过IntelliJ运行所有内容。

我很欣赏有关如何对其进行修改以及将所有内容制作成相同格式的建议?

Ps:我有其他行包含多个“,”文本列中的两个“”,如果可能的话我想忽略那些(不拆分它们)

1 个答案:

答案 0 :(得分:1)

你应该传递quotechar:

import pandas as pd
import numpy as np
rawData = pd.read_csv('TwitterData_2017.csv', sep=",", quotechar='"')
print(rawData.head(n=4))

"例如,在博士之前,因为csv使用一个字符来使用分隔符字符来构造长字符串,默认情况下是"。因此,您需要在读取时传递quotechar,以便csv解析知道带分隔符的字符串何时开始并结束。