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'])
我有一个数据框,我想在其中显示状态列中的特定值,例如“已交付”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'])