Python Pandas检查数据帧分组,有多少人有相同的书籍组合



所以我有一个人员列表,每个人都有2本以上的书,可能有4本。我想做一个分组并检查收到的书的组合频率例如[ID,books]比如ID:1,他有书:A,B我想知道有多少人收到了A和B的组合书。

从技术上讲,如果某人有书A、B、C;他将具有(A,B(、(A,C(、(B,C(和(A,B.C(的组合。

输入:

df = pd.DataFrame({'user': [1, 1, 2, 2, 3, 3, 3],
'disease': ['a', 'b', 'b', 'c', 'a', 'b', 'c']})[enter image description here][1]

在此处输入图像描述

您可以使用set操作。

识别具有给定目标组合的用户:

target = {'a', 'b'}
df.groupby('user')['disease'].agg(lambda x: target.issubset(x))

输出:

user
1     True
2    False
3     True
Name: disease, dtype: bool

统计与目标匹配的用户数:

target = {'a', 'b'}
df.groupby('user')['disease'].agg(lambda x: target.issubset(x)).sum()

输出:2

相关内容

  • 没有找到相关文章

最新更新