繁体   English   中英

使用字典为列值过滤pandas数据帧

[英]Filtering pandas dataframe using dictionary for column values

前提

我需要使用字典作为大型数据帧的过滤器,其中键值对是不同列中的值。 这个字典是从一个单独的数据dict(zip(df.id_col, df.rank_col))获得的,使用dict(zip(df.id_col, df.rank_col))所以如果字典不是最好的方法,那就可以改变了。

这与这个问题非常相似: 使用dict中的值过滤pandas数据帧,但从根本上(我认为)不同,因为我的字典包含列配对值:

示例数据

df_x = pd.DataFrame({'id':[1,1,1,2,2,2,3,3,3], 
'B':[1,1,1,0,1,0,1,0,1], 'Rank':['1','2','3','1', '2','3','1','2','3'],'D':[1,2,3,4,5,6,7,8,9]})
filter_dict = {'1':'1', '2':'3', '3':'2'}

对于这个数据帧df_x我希望能够查看过滤器字典并将其应用于一组列,这里是idRank ,因此数据帧将减少到:

在此输入图像描述

实际的源数据帧大约是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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM