簡體   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