[英]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
我希望能够查看过滤器字典并将其应用于一组列,这里是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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.