【发布时间】:2018-05-20 16:59:29
【问题描述】:
我有一个大型 json 文件,我需要在不使用 json 模块的情况下将其读入 pandas 数据框。这是文件melbourne_bike_share.json 的链接。我不知道要删掉什么来做一个最小的例子。
我尝试从读取文件到数据帧的每一种方式,都会遇到同样的错误:
ValueError: Mixing dicts with non-Series may lead to ambiguous ordering.
我试过直接阅读:
import pandas as pd
mbs = pd.read_json('Melbourne_bike_share.json')
并确保 pd.read_json() 读取的字符串是正确的:
with open("Melbourne_bike_share.json", encoding="utf8") as mbs_json:
mbs_string = mbs_json.readlines()
mbs_string = [line.rstrip() for line in mbs_string]
mbs_string = ''.join(mbs_string)
mbs = pd.read_json('Melbourne_bike_share.json')
但仍然得到相同的 ValueError。我找不到导致此错误的原因,它的真正含义,或者几乎所有涉及读取 json 文件的问题,这些问题不只是建议使用 json 模块,而我无法做到。
我是 python 和 json 文件的新手。据我所知,在能够读取 json 文件之后,下一步就是将其展平:
from pandas.io.json import json_normalize
df = json_normalize(mbs)
之后,我将拥有我的数据框并可以对其进行操作。
编辑后显示结果数据帧的预期第一行。 第一行是列标题(默认索引,直到我弄清楚如何从 json 文件中的元数据中提取列标题)。我将列标题间隔 0-5 以与它们的值对齐,之后,此处的格式将它们放在新行上。对于那个很抱歉。希望你能看到它们都应该对齐。 第二行是第一行。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 155 7C09387D-9E6C-4B42-9041-9A98B88F54BB 155 1428899388 880594 1453945520 880594 {\n "invalidCells" : {\n "27624917" : "22/... 2 Harbour Town - Docklands Dve - Docklands 60000 9 14 1453985105 [{"address":"","city":"","state":"","zip":""},..
任何帮助将不胜感激。
【问题讨论】:
-
你有一个你希望输出看起来如何的例子
-
此数据似乎与多个列表嵌套得很深。我不确定它是否是为简单消费而设计的。此数据的 csv 格式可在 data.gov.au/dataset/… 获得
-
我对其进行了编辑并放入了一个输出示例。是的,这个 json 文件是作为第一次了解 json 文件是什么以及如何解析它们而提供的。我同意这似乎过于复杂,特别是考虑到我们不允许使用 json 模块。
标签: json python-3.x pandas dataframe