使用Pandas groupby+value_counts统计区域库存零件数量异常,求排查
问题分析与解决方法
问题根源
你当前的代码InventorySummary = InventoryRawData.groupby(['Region'])['Part Number'].value_counts()做的是:按区域分组后,统计每个区域内单个零件的重复出现次数,输出结果是一个带多层索引(Region + Part Number)的Series,每个行对应某个区域下某个零件的出现频次。这和你的需求不匹配:
- 若你要统计每个区域的唯一零件总数量:这个代码会输出每个零件的计数(示例中都是1),而非区域的唯一零件总数;
- 若你要输出带Quantity列的结构化结果:当前结果是Series,没有单独的Quantity列,不符合你要的DataFrame格式。
对应解决方案
根据你的需求分两种情况处理:
情况1:统计每个区域的唯一零件总数
直接使用nunique()方法计算分组内唯一值的数量,再转成带Quantity列的DataFrame:
InventorySummary = InventoryRawData.groupby(['Region'])['Part Number'].nunique().reset_index(name='Quantity')
输出结果会是每行对应一个区域,Quantity列显示该区域的唯一零件总数。
情况2:保留区域-零件的分层结构,Quantity列显示每个零件的出现次数(示例中均为1)
需要把value_counts()的结果转成DataFrame,并将统计列命名为Quantity:
InventorySummary = InventoryRawData.groupby(['Region'])['Part Number'].value_counts().reset_index(name='Quantity')
这样输出的DataFrame会包含Region、Part Number、Quantity三列,每个零件在对应区域的Quantity值为1(符合你的示例场景)。
内容的提问来源于stack exchange,提问作者MoMo
相关产品推荐
相关产品推荐

