2016-08-10 26 views
5

Mam DataFrame, którą grupuję. Chciałbym dodać kolejną kolumnę do ramki danych, która jest wynikiem różnic funkcji na grupę. Coś jak:Zmodyfikuj grupę pandy

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

chciałbym dostać na każdej grupy differnece kolumny D i mają DF, które zawierają nową kolumnę z kalkulacji różnicowych.

Odpowiedz

5

IIUC można użyć 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

To jest to, co zrobiłem. – piRSquared