如何用Pandas统计Excel列中分组类别的出现次数?
分组统计行为出现次数的实现方法
核心思路
先建立行为字符串到分组(1-4)的映射关系,再基于这个映射对原数据或已统计的单行为次数进行分组求和。
方法一:基于原DataFrame直接处理
- 先定义所有行为对应的分组映射字典(把你40余种行为逐一对应到1-4组):
group_mapping = { "喝水": 1, "进食": 1, "行走": 2, "奔跑": 2, "休息": 3, "睡眠": 3, "梳理毛发": 4, # 补充剩余所有行为的分组对应关系 }
- 给DataFrame新增分组列,再统计各组次数:
# 生成分组列,未匹配到的行为会返回NaN,可按需用fillna指定默认组 df['Group'] = df['Behavior'].map(group_mapping) # 按分组统计次数,sort_index()让结果按组号1-4排序 group_counts = df['Group'].value_counts(dropna=False).sort_index() print(group_counts)
方法二:基于已统计的单行为次数处理
如果你已经通过count = df['Behavior'].value_counts()得到了单个行为的次数,可以直接基于这个Series处理,效率更高:
# 用映射字典将单行为次数关联到分组,再按分组求和 group_counts = count.map(group_mapping).groupby(level=0).sum().sort_index() print(group_counts)
注意事项
- 确保
group_mapping包含所有40余种行为,避免出现NaN导致统计遗漏; - 如果存在未明确分组的行为,可使用
fillna()将其归到特定组(比如fillna(0)标记为未分组); sort_index()可以保证结果按组号1-4的顺序输出,方便查看。
内容的提问来源于stack exchange,提问作者Tangent_Rift
相关产品推荐
相关产品推荐

