2016-05-26 42 views
2

我有一个数据帧:熊猫GROUPBY回数据帧

df = pd.DataFrame({'Section': [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6], 
        'Unit': np.arange(0,15)/100.0, 
        'Entries': [11, 22, 23, 1, 4, 8, 
           99, 112, 235, 22, 126, 
           442, 45, 56, 10], 
        'Exits': np.random.randint(0,100,15)}, 
        columns = ['Section', 'Unit', 'Entries', 'Exits']) 

我想改变项数据为每段值之间的差异。

例如,第1部分的条目是11,22,23。我希望它们是0,11,1(每个值之间的差异)。

我可以做df.groupby('Section').Entries.apply(diff)但是这样做会摆脱初始值,并留下一系列我不知道如何返回到数据框。

如何做到这一点?

回答

2

是你想要的吗?

In [93]: df['diff'] = df.groupby('Section')['Entries'].diff().fillna(0) 

In [94]: df 
Out[94]: 
    Section Unit Entries Exits diff 
0   1 0.00  11  97 0.0 
1   1 0.01  22  89 11.0 
2   1 0.02  23  98 1.0 
3   2 0.03  1  39 0.0 
4   2 0.04  4  42 3.0 
5   2 0.05  8  35 4.0 
6   3 0.06  99  59 0.0 
7   3 0.07  112  16 13.0 
8   3 0.08  235  1 123.0 
9   4 0.09  22  73 0.0 
10  4 0.10  126  97 104.0 
11  4 0.11  442  56 316.0 
12  5 0.12  45  78 0.0 
13  5 0.13  56  42 11.0 
14  6 0.14  10  30 0.0 
+0

是的,但后来我想整个数据框回来与条目列更新。那有意义吗? – RSHAP

+0

@RSHAP,我已经更新了答案 - 请检查 – MaxU

+0

杜......是的,这是答案,谢谢! – RSHAP