我有一个特定的用例,我不能在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)如果能有人帮忙就太好了。我不知道该怎么做。
A
iyzzxitl1#
如果需要计算每个组order_id的唯一值成员资格,则首先聚合set,然后通过集合A比较值:
order_id
set
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
rqqzpn5f2#
将groupby.agg与set操作一起使用:
groupby.agg
(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
2条答案
按热度按时间iyzzxitl1#
如果需要计算每个组
order_id
的唯一值成员资格,则首先聚合set
,然后通过集合A
比较值:rqqzpn5f2#
将
groupby.agg
与set
操作一起使用:输出: