Pandas extracting/subsetting 通过 groupby 函数的特定值

Pandas extracting/subsetting by a specific value from a groupby function

我有一个数据框,我想在其中显示状态列中的特定值,例如“已交付”and/or“已确认”。

orders.groupby(by=['status','size'])['id'].count()

我从来没有这样做过,所以我查阅了Pandas官方文档,我怀疑方法是使用.get_group().

orders.groupby(by=['status','size']).get_group(("Delivered")).agg("count")

但是这会生成异常“ValueError:必须向 get_group 提供具有多个分组键的元组”。

我迷路了,这是在期待“已交付”,然后可能是尺寸列的所有可行条目吗?如果是这样,我不确定我是否会提前知道这一点。

是否有另一种方法来对仅保留“已交付”或“已确认”进行子集化?

非常感谢!

我认为最简单的解决方案是在分组前仅过滤带有 status == 'Delivered' 的行。

delivered_id_count = orders[orders.status == 'Delivered'].groupby(by='size')['id'].count()

或者,如果您想检查多个状态值,请像您一样计算所有组,然后 select 分别计算每个组。

id_counts = orders.groupby(by=['status','size'])['id'].count()


# delivered status 
print(id_counts.loc['Delivered'])

# confirmed status
print(id_counts.loc['Confirmed'])