根据两列的匹配值过滤数据框
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
我有一个如下所示的数据框
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