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

如何在pandas中逐列对比数据与给定列表并按规则计算得分

Pandas 逐列匹配答案得分计算实现

以下是完整可运行的实现代码:

import pandas as pd
import numpy as np

# 构造测试数据,实际使用时替换为你自己的DataFrame即可
df = pd.DataFrame({
    'col1': ['A', 'A', 'D', 'A', 'A'],
    'col2': ['E', '', 'B', 'D', ''],
    'col3': ['C', 'D', '', 'E', 'C']
})
answer_key = ["A", "B", "C"]

# 逐列计算每个单元格的得分
score_matrix = df.copy()
for col_idx, col_name in enumerate(df.columns):
    current_correct = answer_key[col_idx]
    score_matrix[col_name] = np.select(
        condlist = [
            # 匹配未作答的空值场景,兼容NaN、空字符串、带空格的空值
            df[col_name].isna() | (df[col_name].str.strip() == ''),
            # 匹配答对的场景
            df[col_name] == current_correct,
            # 剩余情况均为答错
            True
        ],
        choicelist = [0, 5, -5]
    )

# 计算每行单条总得分
score_matrix['单条得分'] = score_matrix.sum(axis=1)
# 计算全局总得分
total_score = score_matrix['单条得分'].sum()

# 结果输出
print("各单元格得分及单条得分:")
print(score_matrix)
print("\n全局总得分:", total_score)

示例运行结果

针对你提供的测试数据,运行后输出结果如下:

col1col2col3单条得分
5-555
50-50
-5500
5-5-5-5
50510

全局总得分:10

实现说明

  • 自动按列的顺序和answer_key的位置一一对应匹配答案,无需手动修改列名适配
  • 采用向量化运算实现,相比逐行遍历apply性能更高,适合万行以上的大数据量计算场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:24:02