2017-10-15 68 views
1

我在将由不同长度的列表组成的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使它发挥作用。我不知道还有什么可以做的,如果任何人可以给我一只手或者给我一个建议,那就太好了..

回答

0
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 
+0

正是我需要的,非常感谢温! – Javi