我的pandas数据框无法按列条件过滤

时间:2019-09-17 19:26:06

标签: python-3.x pandas

我试图仅显示A列中的值大于0的行。我应用了以下代码,但未获得正确的返回数据框。为什么?

in: df.info()
out: 
A  non-null int64
B  non-null int64

in:df['A']>0
out:
A   B
5   1
0   0

显然,第二行不应显示。这是怎么回事?

1 个答案:

答案 0 :(得分:0)

您写条件的方式实际上是一个过滤器(又称掩码或谓词)。您可以使用该过滤器并将其应用于DataFrame以获取实际的行:

In [1]: from pandas import DataFrame

In [2]: df = DataFrame({'A': range(5), 'B': ['a', 'b', 'c', 'd', 'e']})

In [3]: df
Out[3]:
   A  B
0  0  a
1  1  b
2  2  c
3  3  d
4  4  e

In [4]: df['A'] > 2
Out[4]:
0    False
1    False
2    False
3     True
4     True
Name: A, dtype: bool

In [5]: df[df['A'] > 2]
Out[5]:
   A  B
3  3  d
4  4  e

做同一件事的另一种方法是使用query()

In [6]: df.query('A > 2')
Out[6]:
   A  B
3  3  d
4  4  e