2017-10-15 80 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