熊猫找到了所有用户都曾去过的目的地

时间:2019-02-12 17:40:50

标签: python pandas

我有一个包含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

我正在使用具有数千个用户和目的地的数据集,因此必须向外扩展。

3 个答案:

答案 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')