2016-08-10 30 views
5

Tôi có một DataFrame mà tôi nhóm. Tôi muốn thêm cột khác vào khung dữ liệu, đó là kết quả của sự khác biệt chức năng, cho mỗi nhóm. Một cái gì đó như:Sửa đổi nhóm gấu trúc

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() 

Tôi muốn lấy cho mỗi nhóm khác biệt của cột D và có DF bao gồm cột mới có tính toán khác.

Trả lời

5

IIUC bạn có thể sử dụng 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 
+0

Đây là những gì tôi sẽ đã làm. – piRSquared

Các vấn đề liên quan