Python 使用列值字典筛选数据帧 前提

Python 使用列值字典筛选数据帧 前提,python,pandas,dictionary,filter,Python,Pandas,Dictionary,Filter,我需要使用字典作为大型数据帧上的过滤器,其中键值对是不同列中的值。 该词典是使用dict(zip(df.id\u col,df.rank\u col))从一个单独的数据帧中获取的。因此,如果词典不是最好的方法,则可以更改 这与这个问题非常相似:但本质上(我认为)不同,因为我的字典包含列对值: 示例数据 对于此数据帧df_x,我希望能够查看筛选字典并将其应用于一组列,这里是id和Rank,因此数据帧缩减为: 实际源数据帧约为1M行,字典>100个键值对。 谢谢您的帮助。您可以通过isin查看 d

我需要使用字典作为大型数据帧上的过滤器,其中键值对是不同列中的值。 该词典是使用dict(zip(df.id\u col,df.rank\u col))从一个单独的数据帧中获取的。因此,如果词典不是最好的方法,则可以更改

这与这个问题非常相似:但本质上(我认为)不同,因为我的字典包含列对值:

示例数据 对于此数据帧
df_x
,我希望能够查看筛选字典并将其应用于一组列,这里是
id
Rank
,因此数据帧缩减为:

实际源数据帧约为1M行,字典>100个键值对。
谢谢您的帮助。

您可以通过isin查看

df_x[df_x[['id','Rank']].astype(str).apply(tuple,1).isin(filter_dict.items())]
Out[182]: 
   id  B Rank  D
0   1  1    1  1
5   2  0    3  6
7   3  0    2  8

您可以使用isin检查

df_x[df_x[['id','Rank']].astype(str).apply(tuple,1).isin(filter_dict.items())]
Out[182]: 
   id  B Rank  D
0   1  1    1  1
5   2  0    3  6
7   3  0    2  8

这不起作用,因为两列都是int64;但是很容易更改为
astype(int)
!再次感谢W-B!!这不起作用,因为两列都是int64;但是很容易更改为
astype(int)
!再次感谢W-B!!