如何统计pandas DataFrame每行首列值在对应行的出现次数并新增列存储
pandas 实现行首元素本行出现次数统计
场景说明
现有如下构建的DataFrame:
import pandas as pd data = [['BAL', 'BAL', 'NO', 'DAL'], ['DAL', 'DAL', 'TEN', 'SF']] df = pd.DataFrame(data)
需求为统计每一行首列的取值在该行内的出现次数,结果存入新增列df['Count']。
实现方案
方案1:apply逐行处理(小数据集适用,逻辑直观)
通过apply逐行遍历,统计每行首元素的出现次数:
df['Count'] = df.apply(lambda row: row.value_counts()[row.iloc[0]], axis=1)
方案2:向量化运算(大数据集适用,性能更高)
避免逐行遍历的性能损耗,通过等值比较+按行求和实现:
# 先将所有元素和对应行的首列元素比较,得到布尔矩阵,再按行统计True的数量 df['Count'] = df.eq(df.iloc[:, 0], axis=0).sum(axis=1)
运行结果
执行后得到的df输出如下:
| 0 | 1 | 2 | 3 | Count |
|---|---|---|---|---|
| BAL | BAL | NO | DAL | 2 |
| DAL | DAL | TEN | SF | 2 |
内容的提问来源于stack exchange,提问作者Scott Woodhall
相关产品推荐
相关产品推荐

