如何在Pandas的group by分组中按条件统计对应字段值?
你原有合并语句存在笔误,正确写法为:launches.merge(dropped, on='id', how='left')
实现方法
你需要的统计规则是:按name和colour分组后,launches取分组内的总记录数,dropped取分组内dropped字段非空的数量,直接用groupby+agg指定不同列的聚合逻辑即可:
result = df.groupby(['name', 'colour'], as_index=False).agg( launches=('id', 'count'), # id字段无空值,count结果即总记录数 dropped=('dropped', 'count') # count会自动忽略NaN,结果即符合要求的统计值 )
如果你的dropped字段后续可能出现0值,而非仅1和NaN两种取值,可以把dropped的聚合规则改为sum:
result = df.groupby(['name', 'colour'], as_index=False).agg( launches=('id', 'count'), dropped=('dropped', 'sum') )
执行后得到的result就和你需要的预期结果完全一致。
内容的提问来源于stack exchange,提问作者user458
相关产品推荐
相关产品推荐

