簡體   English   中英

json到dataframe:字典的嵌套列表

[英]json to dataframe: nested list of dictionaries

嗨,我有一個json列表,看起來像

data = [{'entry':{'points': 50, 'time': '5:00', 'year': 2010}}, 
   {'entry':{'points': 25, 'time': '6:00', 'month': "february"}}, 
   {'entry':{'points':90, 'time': '9:00', 'month': 'january'}}, 
   {'entry':{'points':20, 'month': 'june'}}]

如何從中創建一個熊貓數據框(我想刪除輸入字段,因為它是多余的)?

以下工作正常,但速度非常慢(對於大數據)

from pandas.io.json import json_normalize    
json_normalize(data)

我認為這更快,但不像潘多尼克

pd.DataFrame([d['entry'] for d in data])

我認為必須有一個更好的解決方案。 我很高興嘗試了以下方法

json_normalize(data, ['entry'])

有任何想法嗎?

我認為必須有一個更好的解決方案。

定義“更好”。 你的意思是更快嗎? 沒有,不是這樣的結構,沒有。 在幾乎所有情況下,列表推導的優化速度都比其for-loop等效方法更快。

你是說看起來更好的東西嗎? 老實說,我認為列表理解看起來不錯。

有沒有一種神奇的方法可以自動處理這種格式的數據? 是! 不幸的是,您已經找到了它( json_normalize ),並且發現它比list comp要慢得多:

In [431]: data = data * 10000

In [432]: %timeit json_normalize(data)
1.3 s ± 19.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [433]: %timeit pd.DataFrame([d['entry'] for d in data])
63.2 ms ± 1.26 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

因此,沒有,沒有更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM