pandas - 使用带有 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 数据本身上使用该函数,但我不知道如何给出正确的函数来应用。
解决方案
您需要在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
推荐阅读
- google-apps-script - 在 Google Apps 脚本中运行多个函数
- oracle - 在 Oracle 中运行存储过程时出错 - 无法打印游标
- postgresql - 在 postgres dockerfile 上运行 psql
- apache-kafka - Kafka Streams - 为什么没有 GlobalKStream?
- javascript - vueJs中如何获取vue元素调用方法
- javascript - 通过 Javascript 和 EWS 在 Outlook 缓存模式下设置 HTML
- security - Maximo 7.6 隐藏或屏蔽两个特定用户的多个安全组
- if-statement - 事件触发器根据 2 列中的值将行移动到另外两个工作表之一
- sql - TSQL:如何根据单元格中的数字将一行拆分为多行
- python - 我怎样才能拥有它,以便每次在用 python 制作的 Discord 机器人上发送消息时添加 exp