You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas计算数据框每行的真阳性率(TPR)

解决方案

可以用Pandas的矢量化操作快速实现这个需求,核心思路是逐行统计预测结果与标签匹配的数量,再除以预测列的总数,得到每行的真阳性率。

完整代码示例

import pandas as pd

# 构造示例数据框
df = pd.DataFrame({
    'label': ['Apple', 'Orange'],
    'pred1': ['Apple', 'Orange'],
    'pred2': ['Orange', 'Orange'],
    'pred3': ['Apple', 'Orange']
})

# 1. 筛选所有预测列(排除label列)
pred_cols = df.columns.drop('label')

# 2. 逐行计算匹配数量 / 预测列总数,保留两位小数
df['Score'] = (df[pred_cols].eq(df['label'], axis=0).sum(axis=1) / len(pred_cols)).round(2)

print(df[['Score']])

代码解释

  • df[pred_cols].eq(df['label'], axis=0):将每行的所有预测列值与该行的label值做相等比较,返回布尔值组成的DataFrame
  • .sum(axis=1):对每行的布尔值求和(True记为1,False记为0),得到该行的真阳性(TP)数量
  • / len(pred_cols):除以预测列的总数(即TP+FN的总数,因为所有预测都是针对当前标签类别的判断)
  • .round(2):将结果保留两位小数,与期望的输出格式一致

运行后输出:

Score
0   0.67
1   1.00

(注:0.66是2/3的近似值,实际计算为0.666...,round(2)会得到0.67;若需严格显示为0.66,可改用df['Score'] = df['Score'].apply(lambda x: "{:.2f}".format(x))做格式化)

内容的提问来源于stack exchange,提问作者mre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:55:24