Pandas -分组时使用特定值计数行

rryofs0p  于 2022-12-28  发布在  其他
关注(0)|答案(2)|浏览(137)

我有一个特定的用例,我不能在Pandas身上做得很好。

order_id  asset_id
1         A
1         B
1         C
2         A
2         C
3         A
4         B
4         C

1.我想知道资产A单独在多少个订单中?在这种情况下:1次(顺序3)
1.我想知道资产A与其他人的订单数量是多少?在这种情况下:2次(按顺序1和2)
如果能有人帮忙就太好了。我不知道该怎么做。

iyzzxitl

iyzzxitl1#

如果需要计算每个组order_id的唯一值成员资格,则首先聚合set,然后通过集合A比较值:

s = df.groupby('order_id')['asset_id'].agg(set)
print (s)
order_id
1    {A, B, C}
2       {A, C}
3          {A}
4       {B, C}
Name: asset_id, dtype: object

alone = (s == {'A'}).sum()
print (alone)
1

with_others = (s > {'A'}).sum()
print (with_others)
2
rqqzpn5f

rqqzpn5f2#

groupby.aggset操作一起使用:

(df.groupby('order_id')['asset_id']
   .agg(alone=lambda x: set(x)=={'A'},
        others=lambda x: set(x)>{'A'}
       )
   .sum()
)

输出:

alone     1
others    2
dtype: int64

相关问题