通常当使用.apply()
方法,传递一个只接受一个参数的函数。
def somefunction(group):
group['ColumnC'] == group['ColumnC']**2
return group
df.groupby(['ColumnA', 'ColumnB']).apply(somefunction)
Here somefunction
应用于每个group
,然后返回。基本上我用的是这个例子在这里 https://stackoverflow.com/a/22678651/4791226.
我想有能力未指定列名称ColumnC
预先。将其作为参数传递somefunction
将使代码更加灵活。
def somefunction(group, column_name):
group[column_name] == group[column_name]**2
return group
df.groupby(['ColumnA', 'ColumnB']).apply(somefunction)
有什么办法可以让这个工作吗?我无法通过group
to somefunction
,因为这是神奇地完成的.apply()
在后台。
您可以通过传递关键字参数apply
df.groupby(['ColumnA', 'ColumnB']).apply(somefunction, column_name='col')
MCVE https://stackoverflow.com/help/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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)