Python 如何在数据帧上选择与重复id匹配的特定字符串的值?

Python 如何在数据帧上选择与重复id匹配的特定字符串的值?,python,pandas,dataframe,Python,Pandas,Dataframe,我有这个数据框: user_id event 1 registration 1 visit 1 purchase 2 registration 2 external 我想从至少有一个外部类型事件的每个用户id中选择所有值,以便将它们存储在另一个数据帧中。因此,对于本例,我希望有一个包含下一个信息的数据帧: user_id event 2 registration 2 external 我该

我有这个数据框:

user_id  event 
1        registration
1        visit
1        purchase
2        registration
2        external
我想从至少有一个外部类型事件的每个用户id中选择所有值,以便将它们存储在另一个数据帧中。因此,对于本例,我希望有一个包含下一个信息的数据帧:

user_id  event
2        registration
2        external

我该怎么做呢?

您可以计算范围内的用户ID。然后应用布尔掩码:

# calculate unique in-scope IDs
ids = df.loc[df['event'] == 'external', 'user_id'].unique()

# mask dataframe with Boolean series
res = df[df['user_id'].isin(ids)]

print(res)

   user_id         event
3        2  registration
4        2      external

您可以计算范围内的用户ID。然后应用布尔掩码:

# calculate unique in-scope IDs
ids = df.loc[df['event'] == 'external', 'user_id'].unique()

# mask dataframe with Boolean series
res = df[df['user_id'].isin(ids)]

print(res)

   user_id         event
3        2  registration
4        2      external
你需要

 #find the user ids wchich has `external`
 user=df[df['event'].isin(['external'])]['user_id']
 #df, which has users
 df[df['user_id'].isin(user)]
你需要

 #find the user ids wchich has `external`
 user=df[df['event'].isin(['external'])]['user_id']
 #df, which has users
 df[df['user_id'].isin(user)]