1. 程式人生 > >pandas_cookbook學習(五)

pandas_cookbook學習(五)

使用剩下值的均值代替此值,注意transform的用法,與apply相區分:
apply返回一個聚類結果,transform分別返回每個處理的結果

In [94]: df = pd.DataFrame({'A' : [1, 1, 2, 2], 'B' : [1, -1, 1, 2]})

In [95]: gb = df.groupby('A')

In [96]: def replace(g):
   ....:    mask = g < 0
   ....:    g.loc[mask] = g[~mask].mean()
   ....:    return g
   .
...: In [97]: gb.transform(replace) Out[97]: B 0 1.0 1 1.0 2 1.0 3 2.0

按分組和某一列值分別排序:

In [98]: df = pd.DataFrame({'code': ['foo', 'bar', 'baz'] * 2,
   ....:                    'data': [0.16, -0.21, 0.33, 0.45, -0.59, 0.62],
   ....:                    'flag': [False, True] * 3})
   ....: 

In [
99]: code_groups = df.groupby('code') In [100]: agg_n_sort_order = code_groups[['data']].transform(sum).sort_values(by='data') In [101]: sorted_df = df.loc[agg_n_sort_order.index] In [102]: sorted_df Out[102]: code data flag 1 bar -0.21 True 4 bar -0.59 False 0 foo 0.16 False 3 foo 0.45 True
2 baz 0.33 False 5 baz 0.62 True