2017-04-26 135 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