求助:Python DataFrame分组后不同值计数实现方法
Pandas DataFrame分组计数解决方案
问题分析
你当前的代码存在两个核心问题:
df1['Model'].nunique()计算的是整个DataFrame的Model唯一值数量,而非分组后每组的数量df2['Model'].map(df1['Type'].value_counts())关联的是全局的Type计数,不是分组内的对应计数
正确实现代码
假设你是按某列(比如Group,替换为你实际的分组列名)进行分组,想要得到每组的Model唯一值数量,以及每组内各Type的出现次数,代码如下:
import pandas as pd # 1. 按目标列分组(替换'Group'为你的实际分组列名) grouped = df1.groupby('Group') # 2. 统计每组的Model唯一值数量,并重命名列 unique_model_count = grouped['Model'].nunique().rename('Unique_Models') # 3. 统计每组内各Type的出现次数,转为宽格式(Type作为列,计数为值) type_count = grouped['Type'].value_counts().unstack(fill_value=0) # 4. 合并结果得到目标DataFrame df2 = pd.concat([unique_model_count, type_count], axis=1)
代码说明
groupby('Group'):指定分组依据的列,确保所有统计都是基于每组独立计算nunique():精准统计每组内Model的唯一值数量,避免全局统计的错误value_counts().unstack(fill_value=0):将每组内Type的计数从长格式转为宽格式,缺失的Type自动填充0,适配常见的目标格式需求concat:将两个统计结果按列合并,得到结构化的最终数据
如果你的分组逻辑是基于多列,只需将groupby的参数替换为对应的分组键列表即可(比如groupby(['Col1', 'Col2']))。
内容的提问来源于stack exchange,提问作者credenco
相关产品推荐
相关产品推荐

