我有一个包含2列的数据框。一个用于用户,另一个用于目的地。 我正在寻找所有用户访问过的目的地。这是数据框
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
我正在使用具有数千个用户和目的地的数据集,因此必须向外扩展。
答案 0 :(得分:2)
您可以尝试:
# 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
答案 1 :(得分:2)
您可以尝试unstack()将用户转换为列的数据框。然后删除带有空列(未访问)的任何行。
df.groupby(['destination', 'user']).size().unstack().dropna().reset_index().destination
答案 2 :(得分:0)
检查按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')