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

如何高效为Pandas DataFrame添加E列值的全局计数列?

高效实现DataFrame添加列统计指定列值出现次数

需求说明

给定如下结构的DataFrame:

import pandas as pd

data = {
    'C1': [1, 4, 3, 8, 8],
    'C2': [2, 9, 1, 2, 1],
    'E': [3, 1, 1, 8, 2]
}
df = pd.DataFrame(data)

需要新增一列cou,该列值为对应行E列数值在整个E列中的出现次数,最终得到如下预期结果:

C1  C2  E  cou
0   1   2  3    1
1   4   9  1    2
2   3   1  1    2
3   8   2  8    1
4   8   1  2    1

高效实现方法

以下两种方法都是pandas内部优化过的高效方案,适合处理大数据量:

方法1:value_counts() + map()

先统计E列各值的出现次数,再通过映射生成目标列:

# 统计E列每个值的出现次数
e_value_counts = df['E'].value_counts()
# 将E列的值映射为对应的出现次数,生成cou列
df['cou'] = df['E'].map(e_value_counts)

方法2:groupby() + transform('count')

直接通过分组后广播计数结果,代码更简洁:

# 按E列分组,对每组计数并广播回原行
df['cou'] = df.groupby('E')['E'].transform('count')

两种方法都能快速得到预期结果,其中transform方式无需额外存储中间变量,代码更紧凑;value_counts方式逻辑更直观,适合需要复用计数结果的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:35:28