我有一张如下表:
Celebrity Usernames
0 A 2
1 A 1
2 B 3
3 C 2
4 D 2
5 A 3
我想知道有多少用户同时关注 A、C、D。所以,输出应该是 1。我如何使用 python 做到这一点?
这是一种使用groupby()
and的方法nunique()
:
l = ['A','C','D']
df.loc[df['Celebrity'].isin(l)].groupby('Usernames')['Celebrity'].nunique().eq(len(l))
这是另一种方式:
df.groupby(['Usernames','Celebrity']).size().loc[(slice(None),l)].unstack().gt(0)
以及交叉表的替代方案:
df['Celebrity'].str.get_dummies().groupby(df['Usernames']).sum().loc[:,l].astype(bool).all(axis=1)
使用地图:
df.loc[df['Usernames'].map(df.groupby('Usernames')['Celebrity'].agg(set).ge(set(l)))]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句