【问题标题】:How to use read_csv in dataset with broken pipe "¦" as seprator???如何在数据集中使用破管“¦”作为分隔符的read_csv???
【发布时间】:2018-03-09 02:08:48
【问题描述】:

我有 10 个 10mb 到 8gb 的文件数据集,我正在尝试读取大小为 8gb 的数据集 txt,但由于“¦”(断管)而无法读取...几乎所有大小超过 200mb 的数据集都有同样的问题,最小的文件有“正常”管道(|)。

代码是:

p = 0.001  # % of lines

df = pd.read_csv("protectedSearch_GPRS.txt", sep='¦', 
                    skiprows= lambda i: i>0 and random.random() > p)


     ParserWarning: Falling back to the 'python' engine because the separator 
     encoded in utf-8 is > 1 char long, and the 'c' engine does not support such 
     separators; you can avoid this warning by specifying engine='python'.
       after removing the cwd from sys.path.

那么它到底是什么?它是一个错误吗?如何处理这个问题?我试图解决这个问题有 2 天,我真的不知道该怎么做。

非常感谢您,对于任何语言错误,我们深表歉意。

【问题讨论】:

  • 你用的是linux机器吗?
  • 嘿老鹰,我使用的是 Windows 10
  • 很糟糕,我有一个快速的方法来更改分隔符,但它是 *nix 特定的
  • 这是 unicode “断条”字符,它不在 ascii 字符集中。 Pandas 默认使用基于 C 的 csv 解析器,但它只有单字节,无法处理该字符。警告告诉你 pandas 正在退回到较慢的 python 实现。这大多是无害的。您可以按照警告中的说明来避免警告。
  • 在powershell中试试这个,然后用正常的'|'分隔符加载它:(get-content "path:\\protectedSearch_GPRS.txt") -replace '¦','|' | set-content "path:\\protectedSearch_GPRS.txt只需用实际路径替换path

标签: python pandas broken-pipe


【解决方案1】:

不是错误。 Pandas C 引擎仅支持单字符拆分。损坏的管道在技术上是两个 UTF-8 字符,因此错误 character is > 1

例如:

len('¦'.encode('utf-8'))
Out[24]: 2
len(','.encode('utf-8'))
Out[25]: 1

如果您想抑制警告,请明确说明您希望使用的引擎:

df = pd.read_csv(
      "protectedSearch_GPRS.txt", 
      sep='¦', 
      skiprows=lambda i: i > 0 and random.random() > p,
      engine='python'
)

使用engine=python 可以匹配多字符串/正则表达式拆分。

【讨论】:

  • 但是如何使用这些信息来处理这个问题呢?对不起这个问题,我是IT行业的初学者
  • 只需将附加参数 engine='python 添加到 read_csv。这将使用 Python 引擎而不是 C 进行解析并抑制警告。
  • 嘿兄弟,谢谢你,但这是我做的第一件事,但它也不能正常工作......它正在加载但永无止境,我的电脑开始刹车
  • @LeonardoFerreira 如果文件非常大,很可能您的机器内存不足,无法将文件从桌面加载到 RAM。如果您的计算机没有 8GB 可用内存,则无法将 8GB CSV 加载到 Pandas 数据帧。考虑在 Azure 或 AWS 中使用大型 VM 或 Spark 集群来处理您的数据。另外,请将问题标记为已解决,因为此答案解决了您的原始问题。
  • 非常感谢您,蒙特尔!我会这样做...我是 stackOverflow 的新手,抱歉
猜你喜欢
  • 2018-12-04
  • 2017-10-25
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
相关资源
最近更新 更多