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

如何用Python计算DataFrame中相同任务ID的用户答案一致性?

计算同任务ID的答案一致性方法

针对你的需求,核心思路是按hash分组后,统计每组内出现次数最多的答案的占比,同时处理「所有答案都不同」的特殊情况(返回0%)。以下是几种可行的Pandas实现方法:

方法一:自定义聚合函数

直接通过groupby结合自定义函数完成统计,逻辑清晰易懂:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({'hash': list('AAABBBCCCCDDD'),
                   'results': ['Yes', 'No', 'No',
                               'Yes', 'Yes', 'Yes',
                               'Perhaps', 'Yes', '404', 'Perhaps',
                               'Yes', 'No', 'Perhaps',
                              ]
                  })

def calc_consistency(group):
    # 统计每个答案的出现次数
    count_stats = group.value_counts()
    max_count = count_stats.max()
    total = len(group)
    # 判断是否所有答案都唯一:最大出现次数为1,且不同答案数等于总样本数
    if max_count == 1 and count_stats.nunique() == total:
        return 0.0
    # 计算一致性百分比,保留1位小数
    return round((max_count / total) * 100, 1)

# 按hash分组计算一致性
consistency_result = df.groupby('hash')['results'].agg(calc_consistency).reset_index(name='consistency(%)')
print(consistency_result)

方法二:分步统计后合并

通过分步统计总样本数、最大出现次数、不同答案数,再合并计算,适合需要中间统计结果的场景:

# 统计每个hash的总样本数
total_samples = df.groupby('hash').size().rename('total')
# 统计每个hash下各答案的出现次数,取最大值
max_answer_count = df.groupby('hash')['results'].value_counts().groupby('hash').max().rename('max_count')
# 统计每个hash下的不同答案数量
unique_answers = df.groupby('hash')['results'].nunique().rename('unique_count')

# 合并统计结果并计算一致性
consistency_df = pd.concat([total_samples, max_answer_count, unique_answers], axis=1)
consistency_df['consistency(%)'] = consistency_df.apply(
    lambda row: 0.0 if (row['max_count'] == 1 and row['unique_count'] == row['total']) 
                else round((row['max_count'] / row['total']) * 100, 1),
    axis=1
)

# 提取最终结果
final_result = consistency_df.reset_index()[['hash', 'consistency(%)']]
print(final_result)

关键说明

  • 为什么duplicated不适用:duplicated仅能标记重复行,无法直接统计分组内的最大重复次数,尤其当所有值都不重复时,无法提供有效统计维度。而value_counts可以直接输出每个答案的出现频次,完美覆盖所有场景。
  • 特殊情况处理:当分组内所有答案都不同时(最大出现次数为1,且不同答案数等于总样本数),强制返回0%,符合你的需求。

示例输出

hash  consistency(%)
0    A             66.7
1    B            100.0
2    C             50.0
3    D              0.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:57:03