我正在尝试应用一个自定义函数,该函数将两个参数按数据帧应用于组的某些两列。
我尝试使用apply和groupby数据框,但是欢迎任何建议。
我有以下数据框:
id y z
115 10 820
115 12 960
115 13 1100
144 25 2500
144 55 5500
144 65 960
144 68 6200
144 25 2550
146 25 2487
146 25 2847
146 25 2569
146 25 2600
146 25 2382
我想应用带有两个参数的自定义函数并通过id获取结果。
def train_logmodel(x, y):
##.........
return x
data.groupby('id')[['y','z']].apply(train_logmodel)
TypeError: train_logmodel() missing 1 required positional argument: 'y'
我想知道如何传递“ y”和“ z”,以便通过每个ID估算所需的列“ x”。
预期输出示例:
id x
115 0.23
144 0.45
146 0.58
与问题How to apply a function to two columns of Pandas dataframe
有点不同在这种情况下,我们必须处理groupby数据帧,它的工作原理与数据帧略有不同。
谢谢!
答案 0 :(得分:0)
不知道您的train_logmodel
函数,在这里我只能举一个一般的例子。您的函数有一个参数,从该参数可以获取函数内部的列:
def train_logmodel(data):
return (data.z / data.y).min()
df.groupby('id').apply(train_logmodel)
结果:
id
115 80.000000
144 14.769231
146 95.280000