Pandas按两列分组后统计第三列不同值的出现次数如何实现?
实现代码
import pandas as pd df = pd.DataFrame({ 'colA': ['name1', 'name2', 'name2', 'name4', 'name2', 'name5'], 'colB': ['red', 'yellow', 'yellow', 'black', 'yellow', 'green'], 'colC': ['value1', 'vlaue2', 'value2', 'value4', 'value5', 'value6'] }) # 按colA、colB、colC三列分组,统计每个分组的行数 df_grouped = df.groupby(["colA", "colB", "colC"], as_index=False).size().rename(columns={'size':'count'}) # 如需得到你示例中折叠重复colA、colB值的展示效果,将两列设为多重索引即可 df_grouped = df_grouped.set_index(['colA', 'colB']) print(df_grouped)
说明
- 你之前的代码只按
colA、colB两列分组,统计的是每个组合下colC的总条数,没有拆分不同colC值的计数,所以不符合需求。新增colC为分组维度后,就能统计每个(colA,colB)组合下不同colC值的出现次数。 - 你示例预期输出中
vlaue2计数为2,是因为构造测试数据时第三个colC值拼写为value2,如果统一拼写,统计结果会完全匹配你的预期。 size()统计所有行的数量,count()会自动忽略空值,可根据你的实际数据场景选择使用。
内容的提问来源于stack exchange,提问作者plategt
相关产品推荐
相关产品推荐

