You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Pandas中按统计值分组统计SerialNr数量

解决方法

先构造你的原始DataFrame:

import pandas as pd

df = pd.DataFrame({
    'SerialNr': [1, 2, 3, 4],
    'Amount': [2, 4, 3, 2]
})

直接用groupby会漏掉无对应记录的Amount(比如示例里的1),得按以下步骤处理:

  1. 统计已有Amount对应的SerialNr数量
count_result = df.groupby('Amount')['SerialNr'].count().reset_index(name='Quantity of SerialNr')
  1. 补全所有目标Amount值并填充0
    因为你需要包含1到4的所有Amount,先生成完整的Amount序列,再和统计结果做左连接,缺失的数量用0填充:
# 生成1到4的完整Amount列表
full_amounts = pd.DataFrame({'Amount': range(1, 5)})
# 左连接合并,保留所有Amount值
final_result = full_amounts.merge(count_result, on='Amount', how='left').fillna(0)
# 将数量转为整数类型
final_result['Quantity of SerialNr'] = final_result['Quantity of SerialNr'].astype(int)

最终final_result的结果如下:

AmountQuantity of SerialNr
10
22
31
41

为什么直接groupby没成功?

groupby只会对数据中实际存在的Amount值分组统计,不会自动补全缺失的类别。要得到包含所有目标Amount的结果,必须手动生成完整的类别序列再合并填充。

内容的提问来源于stack exchange,提问作者lis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:37:08