提问人:setareh seraj 提问时间:11/15/2023 最后编辑:Andrej Keselysetareh seraj 更新时间:11/15/2023 访问量:23
根据另一个数据集 (DF2) 中的变量在 DF1 中保留(过滤)观测值
keeping (filtering) observations in df1 based on a variable from another dataset (df2)
问:
我有一个大型数据集 (df1),每个用户有多个观测值(600 万行),我只想查看来自某些用户的观测值。选定的用户列表来自另一个数据集 (df2)(4000 个用户)。 DF1 包含 DF2 的所有内容。 下面是简化的示例:
df1:
date_stata hour user
0 20mar2023 9 a
1 20mar2023 9 a
2 20mar2023 9 a
3 20mar2023 9 b
4 20mar2023 9 b
5 20mar2023 12 c
df2:
date_stata hour user
0 a
1 c
我应该如何在 Python os Stata 中做到这一点?
我希望我的输出如下所示:
date_stata hour user
0 20mar2023 9 a
1 20mar2023 9 a
2 20mar2023 9 a
3 20mar2023 12 c
我试过这个:
# Filter the DataFrame based on matching values in the "user" column
filtered_df = df.merge(df2[['user']], on='user', how='inner')
并给了我错误的结果
答:
1赞
SiP
11/15/2023
#1
如果没有适当的数据样本,就很难在代码中给出完整的答案,但总的来说。
仅在 df2 中的用户出现在 df1 中时,才创建一个逻辑掩码,该掩码为 True:
logical_mask = df1['user'].isin(df2['user'])
使用掩码过滤 DF1:
df_res = df1[logical_mask]
评论
0赞
setareh seraj
11/15/2023
谢谢你的帮助。我在问题中提供了示例。我尝试了你的代码,但结果是 # user 0 2 1 3 所以它基本上是给了我 df2,而我想要根据 df2 中用户列的内容过滤的 df1。
0赞
SiP
11/15/2023
您确定在第二行中您使用了 DF1 而不是 DF2 吗?
评论