将 pandas DataFrame query() 方法与 isin() 结合起来

新手上路,请多包涵

So I want to use isin() method with df.query() , to select rows with id in a list: id_list .之前有人问过类似的 问题,但他们使用了典型的 df[df['id'].isin(id_list)] 方法。我想知道是否有办法使用 df.query() 代替。

 df = pd.DataFrame({'a': list('aabbccddeeff'), 'b': list('aaaabbbbcccc'),
                   'c': np.random.randint(5, size=12),
                   'd': np.random.randint(9, size=12)})

id_list = ["a", "b", "c"]

这会产生一个错误

df.query('a == id_list')

原文由 user2165 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 504
2 个回答

来自 query文档

您可以通过在变量前加上“@”字符作为前缀来引用环境中的变量,例如 @a + b

在你的情况下:

 In [38]: df.query('a == @id_list')
Out[38]:
   a  b  c  d
0  a  a  3  4
1  a  a  4  5
2  b  a  2  3
3  b  a  1  5
4  c  b  2  4
5  c  b  1  2

原文由 maxymoo 发布,翻译遵循 CC BY-SA 3.0 许可协议

您还可以在查询字符串中包含列表:

 >>> df.query('a in ["a", "b", "c"]')

这与:

 >>> df.query('a in @id_list')

原文由 Seiji Armstrong 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题