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

Python DataFrame统计两列所有唯一值分别在两列的出现次数

实现方案(基于Pandas)

完整可运行代码

import pandas as pd

# 构造测试数据,你可以替换为自己的实际DataFrame
df = pd.DataFrame({
    'ID': [1,2,3,4,5,6,7,8],
    'Expected': ['A','A','C','B','C','A','B','A'],
    'Actual': ['B','A','B','D','D','A','B','D']
})

# 方法1:双列统计直接合并(适合仅2列统计的场景)
exp_count = df['Expected'].value_counts()
act_count = df['Actual'].value_counts()

# 合并结果、补0、格式调整
result = pd.concat([exp_count, act_count], axis=1)\
           .fillna(0)\
           .astype(int)\
           .rename_axis('Value')\
           .reset_index()
print(result)

# 方法2:长表转换+交叉表(扩展性更强,适合多列统计场景)
melted = df.melt(value_vars=['Expected', 'Actual'], var_name='col', value_name='Value')
result2 = pd.crosstab(melted['Value'], melted['col']).reset_index().rename_axis(columns=None)
print(result2)

效果说明

两种方法最终输出的结果和你要求的结构完全一致:

ValueExpectedActual
A42
B23
C20
D03
  • 方法1逻辑简单直接,分别统计两列频次后合并,用fillna(0)补全某列不存在的取值的计数
  • 方法2扩展性更强,如果后续需要统计更多列的频次,仅需修改melt的value_vars参数即可,无需新增多个统计逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:45:01