Python 在多个列上应用分组

Python 在多个列上应用分组,python,pandas,Python,Pandas,我正在尝试将相同的函数应用于groupby对象的多个列,例如: In [51]: df Out[51]: a b group 0 0.738628 0.242605 grp1 1 0.411315 0.340703 grp1 2 0.328785 0.780767 grp1 3 0.059992 0.853132 grp1 4 0.041380 0.368674 grp1 5 0.181592 0.632006

我正在尝试将相同的函数应用于groupby对象的多个列,例如:

In [51]: df
Out[51]: 
           a         b group
0   0.738628  0.242605  grp1
1   0.411315  0.340703  grp1
2   0.328785  0.780767  grp1
3   0.059992  0.853132  grp1
4   0.041380  0.368674  grp1
5   0.181592  0.632006  grp1
6   0.427660  0.292086  grp1
7   0.582361  0.239835  grp1
8   0.158401  0.328503  grp2
9   0.430513  0.540628  grp2
10  0.436652  0.085609  grp2
11  0.164037  0.381844  grp2
12  0.560781  0.098178  grp2

In [52]: df.groupby('group')['a'].apply(pd.rolling_mean, 2, min_periods = 2)
Out[52]: 
0          NaN
1     0.574971
2     0.370050
3     0.194389
4     0.050686
5     0.111486
6     0.304626
7     0.505011
8          NaN
9     0.294457
10    0.433582
11    0.300345
12    0.362409
dtype: float64

In [53]: 
但是,如果我尝试
df.groupby('group')['a','b'].apply(pd.rolling_-mean,2,min_-periods=2)
df.groupby('group')['a','b'].apply(pd.rolling_-mean,2,min_-periods=2)
,两者都会给我
值错误:无法将字符串转换为浮点:grp1

将函数同时应用于多个列的正确方法是什么?

我想您正在寻找-它将函数应用于每个组

>>> df.groupby('group').transform(pd.rolling_mean, 2, min_periods=2)
           a         b
0        NaN       NaN
1   0.574971  0.291654
2   0.370050  0.560735
3   0.194388  0.816950
4   0.050686  0.610903
5   0.111486  0.500340
6   0.304626  0.462046
7   0.505010  0.265961
8        NaN       NaN
9   0.294457  0.434566
10  0.433582  0.313119
11  0.300344  0.233727
12  0.362409  0.240011