首页 > 解决方案 > 分组行之间的 Pandas 过滤

问题描述

假设我有一个看起来像这样的熊猫表“df”

现场1 FIELD2 FIELD3 FIELD4 FIELD5
00147 65,69 1 2 65,67
00147 65,68 2 3 65,69
00147 66,70 3 4 66,68
00147 65,69 4 5 66,70

如果 FIELD5 值确实出现在 FIELD2 列中,并且如果它们共享它们共享相同的 FIELD1 值,我想过滤这些行。

期望的输出

现场1 FIELD2 FIELD3 FIELD4 FIELD5
00147 65,69 1 2 65,67
00147 66,70 3 4 66,68

我尝试使用重复的数据库“df_1”进行过滤

df[(df['FIELD1']==df_1['FIELD1']) & (df['FIELD5'].isin(df_1['FIELD2'])]

但是,根据不共享该 FIELD1 值的行过滤了更多行。有什么建议吗?

标签: pythonpandas

解决方案


您可以使用加入/合并来实现此目的:

df_merge = df.merge(df
                   , left_on=['FIELD1','FIELD2']
                   , right_on=['FIELD1','FIELD5']
                   ,suffixes=('_l', '_r')
                   )

df_merge.loc[:,['FIELD1_l','FIELD2_l','FIELD3_l','FIELD4_l','FIELD5_l']]

推荐阅读