这是我的部分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
我想在另一个数据框(df1)中创建一个具有每个唯一dStart的Mathews相关系数的列。
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'))
此函数不起作用-我认为是因为该函数返回浮点数,并且“ apply”想要在groupby数据本身上使用该函数,但是我不知道如何提供正确的函数来应用
答案 0 :(得分:1)
您需要在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
答案 1 :(得分:0)
将apply
与lambda
函数一起使用:
df = (df.groupby(['dStart']).apply(lambda x: matthews_corrcoef(x['y_test'], x['y_pred']))
.reset_index(name='Matthews_corrcoef'))
print(df)
dStart Matthews_corrcoef
0 2018-01-01 0.0
1 2018-01-02 0.0