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