我想用下面的字典创建一个熊猫数据框架
a ={('p','l',2):3,('p','l',3):4,('p','l1',5):4,('p','l',5):4,
('p','l',6):2,('p','l2',6):4,('p','l1',2):5}
m n o p
o p l 2 3
1 p l 3 4
2 p l1 5 4
3 p l 6 2我写了如下逻辑df = pd.DataFrame(a,列=‘m’,'n','o','p'),但是它不起作用,你能帮帮我吗?
提前感谢
发布于 2017-12-12 16:15:53
还有另一种选择-
df = pd.DataFrame(list(a.keys()), columns=list('mno'))
df['p'] = list(a.values())
df
m n o p
0 p l2 6 4
1 p l 6 2
2 p l 3 4
3 p l 5 4
4 p l1 2 5
5 p l1 5 4
6 p l 2 3(编辑)取回一个dict post groupby:如果您只想要p的结果,那么在p上调用mean,然后调用to_dict -
df.groupby(['m', 'n']).p.mean().to_dict()
{('p', 'l'): 3.25, ('p', 'l1'): 4.5, ('p', 'l2'): 4.0}发布于 2017-12-12 16:39:11
不使用numpy
pd.DataFrame(np.append(np.array(list(a.keys())),np.array(list(a.values()))[:,None],1),columns=list('abcd'))
Out[1151]:
a b c d
0 p l 2 3
1 p l 3 4
2 p l1 5 4
3 p l 5 4
4 p l 6 2
5 p l2 6 4
6 p l1 2 5发布于 2017-12-12 16:08:30
将Series构造函数与reset_index结合使用
df = pd.Series(a).reset_index()
df.columns=['m','n','o','p']
print (df)
m n o p
0 p l 2 3
1 p l 3 4
2 p l 5 4
3 p l 6 2
4 p l1 2 5
5 p l1 5 4
6 p l2 6 4或者首先对嵌套的list comprehension使用list:
a = [list(k) + [v] for k,v in a.items()]
df = pd.DataFrame(a,columns=['m','n','o','p'])
print (df)
m n o p
0 p l 2 3
1 p l 5 4
2 p l2 6 4
3 p l1 2 5
4 p l 3 4
5 p l 6 2
6 p l1 5 4https://stackoverflow.com/questions/47776866
复制相似问题