【问题标题】:Pandas: Error while loading TSV file with JSON strings in one of the columnsPandas:在其中一列中加载带有 JSON 字符串的 TSV 文件时出错
【发布时间】:2017-11-15 11:52:28
【问题描述】:

我正在尝试加载一个只有两列的 tsv 文件: property_id & photo_urls

对于每个 property_id,photo_urls 列包含一个字符串表示 json 数组,其中每个 json 对象代表一个图像(一个 URL)。

Here(pastbin 链接)是我尝试使用 Pandas 加载的 tsv 文件的一个小样本。

photos_df = pandas.read_csv('test.tsv')

这会引发错误:

ParserError: Error tokenizing data. C error: Expected 49 fields in line 4, saw 84

我猜这是由于两个可能的原因:

  1. 不同的property_id有不同数量的图片/URLs/JSON 对象

  2. JSON 字符串格式错误/有问题

我无法弄清楚它到底是什么。

这里不能使用read_csv 和参数error_bad_lines=False,因为我不想丢失任何数据。

子问题:即使有上述两种情况,当两列确实都是字符串格式时,为什么 read_csv 会抛出错误?它怎么知道那个字符串里面有什么问题?

【问题讨论】:

  • 这是一种可以预处理数据的情况吗?还是类似 Splunk 的工具?如果您首先将所有内容映射到格式良好的 JSON,那么阅读将很容易..
  • 很遗憾,没有。

标签: python json python-3.x pandas parsing


【解决方案1】:

试试

 import pandas as pd
 pd.read_csv('pLurm1w1.txt',delim_whitespace=True)

返回

    property_id                               photo_urls
0   ff808081469fd6e20146a5af948000ea    [{title":"Balcony","name":"IMG_20131006_120837...
1   ff8080814702d3d10147068359d200cd    NaN
2   ff808081470c645401470fb03f5800a6    [{title":"Bedroom","name":"ff808081470c6454014...
3   ff808081470c6454014715eaa5960281    [{title":"Bedroom","name":"Screenshot_7.jpg","...

【讨论】:

  • 谢谢。但这确实解决了该特定行的问题,但仍会导致其他行出现错误。我正在编辑问题,其中包含较大数据块的链接。请查看数据的更新链接。
猜你喜欢
  • 2021-08-16
  • 2014-06-14
  • 1970-01-01
  • 2021-08-14
  • 2012-03-28
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多