【问题标题】:How to use basic indexing with multiple conditionals [duplicate]如何使用具有多个条件的基本索引[重复]
【发布时间】:2021-02-10 07:03:14
【问题描述】:

如您所知,Pandas 中的基本索引非常简单。

import pandas as pd
df = pd.DataFrame({'a':[1,2,3,4]})

假设我想要 'a' 大于 2 的每一行。

df[df['a'] > 2]

好的,但是现在如何使用多个条件?让我们尝试找出 'a' 在 range(2,4) 内的每一行。

df[df['a'] in range(2,4)]
df[1 < df['a'] < 4]
df[df['a'] >1 and df['a'] <4]

所有这些行都返回错误消息:

"Series 的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。"

但据我所知,这些方法并没有达到我的目的。

编辑: 发布后立即找到答案。

df[df.a > 1][df.a < 4]

【问题讨论】:

  • 很高兴您找到了解决方案。但是请注意,@Grayrigel 的解决方案更有效,尤其是使用 between() 的解决方案。

标签: python pandas indexing


【解决方案1】:

您可以在括号中分隔多个条件 &amp; (and) 或 | (or)。这是一个例子:

df[(df.a > 1) & (df.a < 4)]

或者,在这种情况下,您也可以像这样使用gt(大于)或lt(小于):

df[df.a.gt(1) & df.a.lt(4)]

或者你可以使用between方法:

df[df.a.between(1,4, inclusive=False)]

输出

   a
1  2
2  3

【讨论】:

  • 添加了一个答案。让我知道它是否适合您。
猜你喜欢
  • 2016-04-04
  • 1970-01-01
  • 1970-01-01
  • 2019-06-15
  • 2015-02-15
  • 2023-04-01
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多