根据两列的匹配值过滤数据框

Filter dataframe based on matching values from two columns

我有一个如下所示的数据框

cdf = pd.DataFrame({'Id':[1,2,3,4,5],
                    'Label':[1,2,3,0,0]})

我想根据以下条件过滤数据框

cdf['Id']==cdf['Label']  # first 3 rows are matching for both columns in cdf

我尝试了以下

flag = np.where[cdf['Id'].eq(cdf['Label'])==True,1,0]
final_df = cdf[cdf['flag']==1]

但我收到以下错误

TypeError: 'function' object is not subscriptable

我希望我的输出如下所示

     Id Label
0    1   1
1    2   2
2    3   3

我认为你想多了。只需比较列:

>>> cdf[cdf['Id'] == cdf['Label']]
   Id  Label
0   1      1
1   2      2
2   3      3

您的特定错误是由于您使用方括号调用 np.where,例如np.where[...],这是错误的。您应该改用 np.where(...),但上述解决方案一定会尽可能快;)

你也可以查看query

cdf.query('Id == Label')
Out[248]: 
   Id  Label
0   1      1
1   2      2
2   3      3