繁体   English   中英

Pandas GroupBy:应用具有两个参数的函数

[英]Pandas GroupBy: apply a function with two arguments

通常在使用.apply()方法时,会传递一个只接受一个参数的函数。

def somefunction(group):
    group['ColumnC'] == group['ColumnC']**2
    return group

df.groupby(['ColumnA', 'ColumnB']).apply(somefunction)

这里somefunction被应用于每个group ,然后返回。 基本上我在这里使用这个例子

我希望能够事先不指定列名ColumnC 将它作为某种函数的参数somefunction将使代码更加灵活。

def somefunction(group, column_name):
    group[column_name] == group[column_name]**2
    return group

df.groupby(['ColumnA', 'ColumnB']).apply(somefunction)

有没有办法让这项工作? 我无法将group传递给somefunction ,因为这是由背景中的.apply()神奇地完成的。

你可以通过apply传递关键字参数

df.groupby(['ColumnA', 'ColumnB']).apply(somefunction, column_name='col')

MCVE

df = pd.DataFrame(dict(A=list(range(2)) * 5, B=range(10)[::-1]))

def f(df, arg1):
    return df * arg1

df.groupby('A').apply(f, arg1=3)

   A   B
0  0  27
1  3  24
2  0  21
3  3  18
4  0  15
5  3  12
6  0   9
7  3   6
8  0   3
9  3   0

你可以创建一个匿名函数

df.groupby(['ColumnA', 'ColumnB']).apply(lambda x: somefunction(x, 'col'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM