Python 使用列值字典筛选数据帧 前提
我需要使用字典作为大型数据帧上的过滤器,其中键值对是不同列中的值。 该词典是使用dict(zip(df.id\u col,df.rank\u col))从一个单独的数据帧中获取的。因此,如果词典不是最好的方法,则可以更改 这与这个问题非常相似:但本质上(我认为)不同,因为我的字典包含列对值: 示例数据 对于此数据帧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
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!!