[英]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.