[英]how to convert json data with list of list to dataframe using python pandas
JSON對象
實際上,我需要的是對數據幀的JSON。 數據是列表的列表,其中每個列表都包含兩個參數year和其他值。
{
"series_id": "TOTAL.PAEWPUS.A",
"name": "Wells Drilled, Exploratory, Crude Oil, Annual",
"units": "Number of Wells",
"f": "A",
"start": "2004",
"end": "2012",
"last_updated": "2016-04-25T13:57:43-04:00",
"data": [
[
"2010",
669
],
[
"2009",
605
],
[
"2008",
897
],
[
"2007",
808
],
[
"2006",
646
],
[
"2005",
539
],
[
"2004",
383
],
]
}
如何創建這樣的數據框
series_id start end data
TOTAL.PAEWPUS.A 2004 2010 2010
TOTAL.PAEWPUS.A 2004 2010 2009
TOTAL.PAEWPUS.A 2004 2010 2008
TOTAL.PAEWPUS.A 2004 2010 2007
TOTAL.PAEWPUS.A 2004 2010 2006
TOTAL.PAEWPUS.A 2004 2010 2005
TOTAL.PAEWPUS.A 2004 2010 2004
我該如何實現?
您的JSON可以輕松地用Python轉換成dictionary
:
d = { "series_id": "TOTAL.PAEWPUS.A",
"name": "Wells Drilled, Exploratory, Crude Oil, Annual",
"units": "Number of Wells",
"f": "A",
"start": "2004",
"end": "2012",
"last_updated": "2016-04-25T13:57:43-04:00",
"data": [
["2010",669],
["2009",605],
["2008",897],
["2007",808],
["2006",646],
["2005",539],
["2004",383],
]
}
之后,您只能獲得所需的密鑰:
d = {k : d[k] for k in ['series_id', 'start', 'end', 'data']}
由於您僅是date
鍵的第一列,因此請過濾此鍵:
d['data'] = [val[0] for val in d['data']]
結果是這樣的:
print(d)
{'series_id': 'TOTAL.PAEWPUS.A',
'start': '2004',
'end': '2012',
'data': ['2010', '2009', '2008', '2007', '2006', '2005', '2004']}
如果要根據data
設置end
並start
,請執行以下操作:
d['end'] = str(max(map(int,d['data'])))
d['start'] = str(min(map(int,d['data'])))
然后,您只需放入一個數據框:
import pandas as pd
df = pd.DataFrame(d)
print(df)
你得到:
data end series_id start
0 2010 2012 TOTAL.PAEWPUS.A 2004
1 2009 2012 TOTAL.PAEWPUS.A 2004
2 2008 2012 TOTAL.PAEWPUS.A 2004
3 2007 2012 TOTAL.PAEWPUS.A 2004
4 2006 2012 TOTAL.PAEWPUS.A 2004
5 2005 2012 TOTAL.PAEWPUS.A 2004
6 2004 2012 TOTAL.PAEWPUS.A 2004
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.