首页 > 解决方案 > 使用带有 pandas groupby 的自定义评分函数在另一个数据框中创建列

问题描述

这是我的部分 df=

dStart         y_test    y_pred
2018-01-01       1         2
2018-01-01       2         2
2018-01-02       3         3
2018-01-02       1         2
2018-01-02       2         3

我想使用每个唯一 dStart 的 Mathews 相关系数在另一个数据框 (df1) 中创建一列。

from sklearn.metrics import matthews_corrcoef

def mcc_func(y_test,y_pred):
            return matthews_corrcoef(df[y_test].values,df[y_pred].values)
df1['mcc']=df.groupby('dStart').apply(mcc_func('y_test','y_pred'))

这个函数不起作用——我认为是因为该函数返回一个浮点数,并且“应用”想在 groupby 数据本身上使用该函数,但我不知道如何给出正确的函数来应用。

标签: pandasapplypandas-groupby

解决方案


您需要在grouped对象中应用该功能 -

g = df.groupby('dStart')
g.apply(lambda x: matthews_corrcoef(x['y_test'], x['y_pred']))

#OUTPUT
#dStart
#2018-01-01    0.0
#2018-01-02    0.0
#dtype: float64

推荐阅读