通常在使用该.apply()方法时,会传递一个只接受一个参数的函数.
def somefunction(group):
group['ColumnC'] == group['ColumnC']**2
return group
df.groupby(['ColumnA', 'ColumnB']).apply(somefunction)
Run Code Online (Sandbox Code Playgroud)
这里somefunction适用于每个group,然后返回.基本上我在这里使用这个例子.
我希望能够事先不指定列名ColumnC.将其作为参数传递somefunction会使代码更加灵活.
def somefunction(group, column_name):
group[column_name] == group[column_name]**2
return group
df.groupby(['ColumnA', 'ColumnB']).apply(somefunction)
Run Code Online (Sandbox Code Playgroud)
有没有办法让这项工作?我不能传递group到somefunction,因为那是奇迹般地完成.apply()的背景.
你可以传递关键词参数 apply
df.groupby(['ColumnA', 'ColumnB']).apply(somefunction, column_name='col')
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3254 次 |
| 最近记录: |