按日期和Plot分组统计DataFrame中Growth Class 2列各分类出现频次
高效实现方案
你可以直接用pandas内置的分组统计或交叉表功能实现,一行代码就能得到你要的按日期、Plot分组的Growth Class 2分类统计结果,缺失分类自动补0,无需手动写掩码切片。
方案1:groupby + value_counts + unstack
# 先获取所有Growth Class 2的唯一分类,保证结果列完整 growth_classes = df['Growth Class 2'].unique() # 分组统计并转成宽表 result = df.groupby(['Date', 'Plot'])['Growth Class 2']\ .value_counts()\ .unstack(fill_value=0)\ .reindex(columns=growth_classes, fill_value=0)\ .reset_index()
输出结果的行对应每个日期+Plot组合,列对应Growth Class 2的各个分类,值就是对应分类的统计数量,和你手动计算的结果完全一致。
方案2:直接用crosstab交叉表(更简洁)
如果不需要额外处理逻辑,直接用pd.crosstab一步到位:
result = pd.crosstab( index=[df['Date'], df['Plot']], columns=df['Growth Class 2'], dropna=False ).reset_index()
内容的提问来源于stack exchange,提问作者LabRat01010
相关产品推荐
相关产品推荐

