我们如何将函数应用于pandas和python中的整个组?

时间:2013-12-11 04:21:50

标签: python pandas dataframe

我们如何在python中的pandas数据帧中将函数应用于整个组?这是我到目前为止的代码:

df_grouped = df.groupby(['key1', 'key2'])
result_with_bla = df_grouped.magic_apply(myfunc)

基本上我想要一个magic_apply函数,它在df_grouped的每个子组而不是每一行上调用myfunc。那存在吗?

1 个答案:

答案 0 :(得分:1)

正如@DSM所指出的那样,“魔术应用”简称为...... apply。这是一个groupby方法:

In [11]: df = pd.DataFrame([[1, 2], [1, 4], [5, 6]], columns=['A', 'B'])

In [12]: g = df.groupby(['A'])

In [13]: def f(x):
             print(x)
             return len(x)

In [14]: g.apply(f)
   A  B
0  1  2
1  1  4

   A  B
0  1  2
1  1  4

   A  B
2  5  6 
Out[14]: 
A
1    2
5    1
dtype: int64

注意:令人困惑的是,即使只有两个组,f也会被应用3次 - 这是因为pandas需要确定返回类型。