如何使用自定义函数从两列进行数据帧计算以生成另一列?

2024-05-19 20:54:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试应用一个自定义函数,该函数将两个参数应用于GROUPBYDATAFRAME中的特定两列

我已经尝试了apply和groupby dataframe,但欢迎任何建议

我有以下数据帧:

    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数据帧,它的工作原理与数据帧略有不同

提前谢谢


Tags: to数据函数iddataframedata参数return
1条回答
网友
1楼 · 发布于 2024-05-19 20:54:41

我不知道你的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

相关问题 更多 >