2017-04-26 166 views
0

我有一本字典a,看起來像這樣:包含字典數組和矩陣,以大熊貓數據幀

a = {} 
a['first_variable']=np.array([1,2,3,4,5]) 
a['second_variable']=np.array([[1,2],[3,4],[5,6],[7,8],[9,10]]) 

正如你可以看到一些關鍵字包含一個數組,其他矩陣...

鑑於這種字典,我想創建一個數據幀,看起來像這樣

a_dataframe = pd.DataFrame(columns=['first_variable','second_variable_col1','second_variable_col2']) 
a_dataframe['first_variable']=np.array([1,2,3,4,5]) 
a_dataframe['second_variable_col1']=np.array([1,3,5,7,9]) 
a_dataframe['second_variable_col2']=np.array([2,4,6,8,10]) 

這應該以自動的方式來完成...即從字典鍵取的名字d在矩陣的情況下添加col1,col2等...

你能幫助我嗎? 感謝

+1

能否請你把你身邊的問題在不同的問題? – Allen

+0

當然!它在這裏:http://stackoverflow.com/questions/43635629/list-of-dictionaries-containing-arrays-and-matrices-to-pandas-dataframe – gabboshow

回答

2

您可以使用concat與列表理解和DataFrame構造,最後從MultiIndex列創建columns

df = pd.concat([pd.DataFrame(a[x]) for x in a], keys=a.keys(), axis=1) 
df.columns = ['{}{}'.format(x[0], x[1]) for x in df.columns] 
print (df) 
    second_variable0 second_variable1 first_variable0 
0     1     2    1 
1     3     4    2 
2     5     6    3 
3     7     8    4 
4     9    10    5 
+0

謝謝!我已經添加到我的問題一個側面的問題,即如果原來的字典是一個字典列表... – gabboshow

+0

@ScottBoston - 謝謝你。 – jezrael

+0

@ gabboshow - 第二不那麼容易:( – jezrael

1
import pandas as pd 
import numpy as np 
a = {} 
a['first_variable']=np.array([1,2,3,4,5]) 
a['second_variable']=np.array([[1,2],[3,4],[5,6],[7,8],[9,10]]) 

#Use a double list comprehension to construct both data and column names in one go. 
df = pd.DataFrame({'{}_col{}'.format(k,i):e for k,v in a.items() 
         for i,e in enumerate(np.asarray(v).T.reshape(-1,5))}) 
print(df) 
    first_variable_col0 second_variable_col0 second_variable_col1 
0     1      1      2 
1     2      3      4 
2     3      5      6 
3     4      7      8 
4     5      9     10