我寫了一個示例,我想在 pandas.DataFrame.transform 使用的 mask_first 中將 mask_size 作為引數傳遞。
import pandas as pd
import random
a = [a for a in [1,2,3,4,5] for i in range(25)]
b = [random.randrange(1, 10) for _ in range(0, 125)]
d = {'col1': a, 'col2': b}
df = pd.DataFrame(d)
def mask_first(df, mask_size):
result = np.ones_like(df)
result[0:mask_size] = 0
return result
def apply_mask(df, mask_size = 10):
mask = df.groupby(['col1'])['col1'].transform(mask_first).astype(bool)
df = df.loc[mask]
return df
df = apply_mask(df, mask_size = 10)
它給了我錯誤代碼
型別錯誤:mask_first() 缺少 1 個必需的位置引數:'mask_size'
uj5u.com熱心網友回復:
根據檔案pandas.DataFrame.transform,您應該能夠使用transform方法本身將引數傳遞給函式:
DataFrame.transform(func, axis=0, *args, **kwargs)
哪里(從熊貓檔案中提取):
*args:傳遞給 func 的位置引數。
**kwargs:傳遞給 func 的關鍵字引數。
嘗試這樣做以將掩碼大小引數傳遞給您的mask_first函式:
# Important part: .transform(mask_first, mask_size)
mask = df.groupby(['col1'])['col1'].transform(mask_first, mask_size).astype(bool)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/424898.html
下一篇:如何為值范圍執行此函式?
