我有一个字典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])
这应该以自动方式完成...即从字典键中取名字,如果是矩阵,则添加col1,col2等......
你能帮帮我吗? 感谢答案 0 :(得分:2)
您可以将concat
与列表理解和DataFrame
构造函数一起使用,最后在列columns
中创建MultiIndex
:
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
答案 1 :(得分: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