从Json到Pandas Dataframe的不同长度的嵌套列表
问题描述:
我在将由不同长度的列表组成的JSON转换为熊猫数据框时遇到了一些问题。我从这样的网页得到JSON:从Json到Pandas Dataframe的不同长度的嵌套列表
import requests, json
import numpy as np
r = requests.get('https:a_web_page')
data = r.json()
type(data)
从这我得到了一个输出,“数据”是一个列表。
从网页中JSON文件是这样的:
[ [ 1411333200000 , 0.0 , [ 0.0 , 0.0 , 10.0 , 5.4014 , 0.42247 , 0.2517 ,
0.0 , 0.0 , 0.0 , 0.0 , 0.0616 , 0.0 , 0.0]] ,
[ 1411419600000 , 0.0 , [ 0.0
, 0.0 , 10.0 , 4.8029 , 2.17222 , 2.216 , 0.0 , 0.0 , 0.0 , 0.0 , 0.800 ,
0.0 , 0.0]] ,
[ 1411506000000 , 1.13383 , [ 9.448 , 0.0 , 10.0 , 6.07 , 2.1722 , 2.97500 ,
0.0 , 0.0 , 0.0 , 0.0 , 3.8017 , 1.17 , 2.893]]]
这是因为它可以在这个网页被证明是正确的JSON文件:https://konklone.io/json/
我所试图做的是转换变量“数据”到这样一个Dataframe:
1411333200000 0 0 0 10 5.4014 0.42247 0.2517 0 0 0 0
0.0616 0 0
1411419600000 0 0 0 10 4.8029 2.17222 2.216 0 0 0 0 0.8
0 0
1411506000000 1.13383 9.448 0 10 6.07 2.1722 2.975 0 0 0
0 3.8017 1.17 2.893
我的意思是,一个数据帧有15列和3行。
随着正常的方式来传递一个列表到数据帧:DF = pd.DataFrame(数据),我得到3列,所述3TH一个为13个的元素的列表,所以它doesn't工作:
1411333200000 0 [0 0 10 5.4014 0.42247 0.2517 0 0 0 0
0.0616 0 0]
1411419600000 0 [0 0 10 4.8029 2.17222 2.216 0 0 0 0 0.8
0 0]
1411506000000 1.13383 [9.448 0 10 6.07 2.1722 2.975 0 0 0
0 3.8017 1.17 2.893]
我也tryed扁平化“数据”与下面的代码,但它也didn't工作:
我也tryed拆散和json_normalize,但我coudn't使它发挥作用。我不知道还有什么可以做的,如果任何人可以给我一只手或者给我一个建议,那就太好了..
答
df=pd.DataFrame(data)
df=pd.concat([df.iloc[:,0:2],df[2].apply(pd.Series)],axis=1)
df.columns=list(range(df.shape[1]))
df
Out[63]:
0 1 2 3 4 5 6 7 8 \
0 1411333200000 0.00000 0.000 0.0 10.0 5.4014 0.42247 0.2517 0.0
1 1411419600000 0.00000 0.000 0.0 10.0 4.8029 2.17222 2.2160 0.0
2 1411506000000 1.13383 9.448 0.0 10.0 6.0700 2.17220 2.9750 0.0
9 10 11 12 13 14
0 0.0 0.0 0.0 0.0616 0.00 0.000
1 0.0 0.0 0.0 0.8000 0.00 0.000
2 0.0 0.0 0.0 3.8017 1.17 2.893
正是我需要的,非常感谢温! – Javi