Pandas找到了所有用户都去过的不同目的地

2024-10-03 21:29:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有两列的数据帧。一个用于用户,另一个用于目的地。 我正在寻找所有用户访问的目的地。这是数据帧

df1
 user    destination
0  1       dest1
1  2       dest3
2  3       dest4
3  2       dest1
4  2       dest4
5  3       dest1
6  4       dest2
7  4       dest1
8  1       dest4
9  4       dest4

期望输出:

dest1
dest4

我正在使用一个拥有数千个用户和目的地的数据集,因此必须扩展它。你知道吗


Tags: 数据用户destinationdf1目的地userdest1dest2
3条回答

你可以试试:

# find number of unique users
nunique = df.user.nunique()

# find number of unique users by destination
destinations = df.groupby('destination').user.nunique().to_frame().reset_index()

# find the destinations that match
result = destinations[destinations.user == nunique].drop('user', axis=1)
print(result)

输出

  destination
0       dest1
3       dest4

您可以尝试取消stack(),将用户转换为列。然后删除任何列为空(未访问)的行。你知道吗

df.groupby(['destination', 'user']).size().unstack().dropna().reset_index().destination

检查按id分组的用户集之间是否相等

users = df.groupby('destination').user.apply(lambda x: np.equal(set(df.user.unique()),set(x)))
users[users]

你得到了吗

destination
dest1    True
dest4    True

如果需要目标作为数组

users[users].index

Index(['dest1', 'dest4'], dtype='object', name='destination')

相关问题 更多 >