[英]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')
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.