2016-09-28 41 views
1

我有一个数据帧,看起来像如何大熊猫一个numpy的阵列分成单独的列

ID_0 ID_1 ID_2 
0 a b 0.05 
1 a b 0.10 
2 a b 0.19 
3 a c 0.25 
4 a c 0.40 
5 a c 0.65 
6 a c 0.71 
7 d c 0.95 
8 d c 1.00 

我想GROUPBY,并为每个组ID_2列的归一化直方图。所以我做

df.groupby(['ID_0', 'ID_1']).apply(lambda x: np.histogram(x['ID_2'], range = (0,1), density=True)[0]).reset_index(name='ID_2') 

然而,我真的很喜欢numpy数组的11个元素是在数据框的单独列。

我该怎么做?

回答

3

可以从每个numpy的阵列构建一系列对象和元件将被广播为列:

import pandas as pd 
import numpy as np 
df.groupby(['ID_0', 'ID_1']).apply(lambda x: pd.Series(np.histogram(x['ID_2'], range = (0,1), density=True)[0])).reset_index() 

enter image description here

+0

这就是巧妙。谢谢! – eleanora