如何按行统计DataFrame多列中指定元素的出现次数?
统计跨多列指定标签的出现次数
针对你的需求,推荐直接在原DataFrame上对目标标签列进行统计,既高效又能保留所有原始数据,完美规避你提到的第二个方案的问题。
具体实现步骤(以Pandas为例)
- 先定位所有标签列:
tag_cols = ['tag_0', 'tag_1', 'tag_2', 'tag_3', 'tag_4', 'tag_5']
- 筛选出球员100的所有记录,统计标签101的总出现次数:
# 筛选目标球员数据 player_100_data = df[df['player_id'] == 100] # 先逐列统计101的数量,再求和得到总数 total_goals = (player_100_data[tag_cols] == 101).sum().sum()
方法优势
- 无需重塑数据,不会增加行数,处理50万+观测值的大数据量也能保持高效,内存占用低
- 保留所有原始列信息,后续可以直接基于原数据做其他复杂统计(比如同时统计其他标签的出现次数)
- 代码简洁,逻辑清晰,比你提到的第一个方案更直观
扩展:统计所有球员的进球次数
如果需要批量统计所有球员的进球次数,用分组聚合即可:
player_goal_stats = df.groupby('player_id')[tag_cols].apply( lambda group: (group == 101).sum().sum() ).reset_index(name='goal_count')
内容的提问来源于stack exchange,提问作者Santiago Fernndez del Castillo
相关产品推荐
相关产品推荐

