首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python group by,传入列以聚合函数参数

python group by,传入列以聚合函数参数
EN

Stack Overflow用户
提问于 2018-06-17 04:29:07
回答 1查看 737关注 0票数 2

当我将几个列传递给聚合函数时,我希望了解如何在pandas中进行聚合。我习惯了在R中使用dplyr,这是非常简单的。

在我的例子中,'data‘有很多列,包括'TPR’、'FPR‘和'model’。有许多不同的数据集连接在一起,我需要在“model”分组级别运行我的函数。

代码语言:javascript
复制
grouped_data = data.groupby(['model']) 
grouped_data.aggregate( sklearn.metrics.auc(x='FPR',y='TPR') )

但是,这会导致错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-17 04:34:23

由于您只想应用一种方法,因此可以不使用aggregate,而使用apply。参数必须是可调用的Python才能应用于每个组,因此在您的示例中,将如下所示

代码语言:javascript
复制
data.groupby('model').apply(lambda group: sklearn.metrics.auc(group.FPR, group.TPR))

例如:

代码语言:javascript
复制
y = np.array([1, 1, 2, 2])
pred = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, _ = sklearn.metrics.roc_curve(y, pred, pos_label=2)
df_a = pd.DataFrame({'model': 'a', 'FPR': fpr, 'TPR': tpr})
df_b = pd.DataFrame({'model': 'b', 'FPR': fpr, 'TPR': tpr})
data = df_a.append(df_b)
data.groupby('model').apply(lambda group: sklearn.metrics.auc(group.FPR, group.TPR))

输出:

代码语言:javascript
复制
model
a    0.75
b    0.75
dtype: float64
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50891521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档