我试图仅显示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
显然,第二行不应显示。这是怎么回事?
答案 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