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

如何用Pandas向量化方法按行字段汇总列并追加结果至每行?

Pandas向量化实现按字段值汇总并追加新列

你可以用以下两种标准的Pandas向量化方法实现需求,完全不需要低效的iterrows迭代:

方法1:groupby + transform

这种方法通过分组后使用transform,将分组的计数结果广播回原DataFrame的每一行,逻辑直观且高效:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({'condition': [True, False, True, True, False, True, True]})

# 新增Count列:按condition分组后统计每组数量,并映射到每行
df['Count'] = df.groupby('condition')['condition'].transform('count')

执行后得到的结果与你的期望一致:

condition  Count
0       True      5
1      False      2
2       True      5
3       True      5
4      False      2
5       True      5
6       True      5

方法2:value_counts + map

先统计每个值的出现次数,再通过map将对应计数映射到每行:

# 先获取condition列各值的计数
count_map = df['condition'].value_counts()
# 映射生成Count列
df['Count'] = df['condition'].map(count_map)

这种方法代码更简洁,同样能得到完全一致的结果。

扩展说明

如果你的实际场景是基于多个字段计算的值(而非示例中的单一condition列),只需要先将计算结果生成一个临时列,再用上述任意一种方法即可。比如:

# 假设基于col1和col2计算得到key列
df['key'] = df['col1'] + df['col2']
# 用groupby+transform统计key的出现次数并追加
df['Count'] = df.groupby('key')['key'].transform('count')

内容的提问来源于stack exchange,提问作者Lai Yi-Ming

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:25:41