修改pandas组

mat*_*bit 7 python group-by dataframe pandas difference

我有一个DataFrame,我分组.我想在数据框中添加另一列,这是每组的函数diff的结果.就像是:

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
                         'foo', 'bar', 'foo', 'foo'],
                   'B' : ['one', 'one', 'two', 'three',
                          'two', 'two', 'one', 'three'],
                   'C' : np.random.randn(8),
                   'D' : np.random.randn(8)})
df_grouped = df.groupby('B')
for name, group in df_grouped:
   new_df["D_diff"] = group["D"].diff()
Run Code Online (Sandbox Code Playgroud)

我想为每个组得到D列的不同,并且有一个包含带有diff计算的新列的DF.

jez*_*ael 5

您可以使用IIUC DataFrameGroupBy.diff:

df['D_diff'] = df.groupby('B')['D'].diff()
print (df) 
     A      B         C         D    D_diff
0  foo    one  1.996084  0.580177       NaN
1  bar    one  1.782665  0.042979 -0.537198
2  foo    two -0.359840  1.952692       NaN
3  bar  three -0.909853  0.119353       NaN
4  foo    two -0.478386 -0.970906 -2.923598
5  bar    two -1.289331 -1.245804 -0.274898
6  foo    one -1.391884 -0.555056 -0.598035
7  foo  three -1.270533  0.183360  0.064007
Run Code Online (Sandbox Code Playgroud)