使用比较结果作为pandas.DataFrame的索引

时间:2017-05-16 10:08:04

标签: python pandas

import pandas as pd
import numpy as np

df = pd.DataFrame([[1,2,3],[4,np.nan,6]])
whereNans = np.isnan(df)
print whereNans
print df[whereNans]

print "--"*30

print df>3
print df[df>3]

如上所述,whereNans是正确的,但df[whereNans]无法获得我想要的内容。但是,df[df>3]可以得到我想要的。

实际上,whereNans中存储的索引与df>3相同。有什么问题?

1 个答案:

答案 0 :(得分:3)

您似乎对此感到困惑,这是正确的行为,其中掩码为True,它会在该位置显示结果,其中False将显示NaN,所以实际上,您将显示所有NaN s

的df

因为您只有一个NaN值,所以会为该位置返回NaN,如果它为假,您只需NaN

如果您与df>3版本进行比较,则会发现相同的行为:

In[49]:
df[df>3]

Out[49]: 
     0   1    2
0  NaN NaN  NaN
1  4.0 NaN  6.0

另外,只是为了表明这与numpy无关,使用pandas isnull会得到相同的结果:

In[50]:
df[df.isnull()]

Out[50]: 
    0   1   2
0 NaN NaN NaN
1 NaN NaN NaN