【问题标题】:Pandas.read_csv handle exceptions inside of " "Pandas.read_csv 处理“”内的异常
【发布时间】:2018-02-12 13:20:56
【问题描述】:

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

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

示例 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 和 4 行,但在第 3 行失败。这似乎是由于该列在开头和结尾都有“由于有一个额外的” ”。

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

如果我可以重新调整它并使所有内容都变成相同的格式,我将不胜感激?

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

【问题讨论】:

  • 您是否尝试在 pd.read_csv() 中使用 sep=',\s+engine='python' 参数?在这里找到这个stackoverflow.com/questions/26595819/…
  • 我试过你的例子,但我没有在第 3 行得到你的错误。一切似乎都有效。
  • 有趣的是,您的代码在 Python 3 中非常适合我,因为我知道 read_csv() 将处理引号。

标签: python pandas csv


【解决方案1】:

你应该传递quotechar:

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

"在Dr.之前,这是因为csv使用字符来包含内部带有分隔符的长字符串,默认为"。因此,您需要在读取时传递一个引号字符,以便 csv 解析知道带有分隔符的字符串何时开始和结束。

【讨论】:

  • 我包含了 _ , quotechar='"' _ 参数,但它仍然产生相同的错误。似乎没有任何改变
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多