如何统计DataFrame两列值组合的频率并调整列结构?
解决方案
要实现统计Column B与Column C值组合的出现频率、添加计数列并删除Column A,可以用以下两种简洁方法:
方法1:使用groupby + size
# 删除Column A列 df = df.drop('Column A', axis=1) # 按B、C列分组统计出现次数,重置索引并重命名计数列 result_df = df.groupby(['Column B', 'Column C']).size().reset_index(name='Count')
方法2:直接用DataFrame的value_counts
这种方法更直接,适合快速统计多列组合的频率:
# 删除Column A列 df = df.drop('Column A', axis=1) # 统计B、C列组合的出现频率,转成结构化DataFrame result_df = df[['Column B', 'Column C']].value_counts().reset_index(name='Count')
两种方法最终都会得到符合预期的结果:
| Column B | Column C | Count |
|---|---|---|
| Cat | Apple | 2 |
| Dog | Fish | 2 |
| Cat | Fish | 1 |
| Dog | Lemon | 1 |
注:
value_counts()默认按计数降序排列,如果需要保持原数据中组合的出现顺序,可添加参数sort=False。
内容的提问来源于stack exchange,提问作者kenny
相关产品推荐
相关产品推荐

