Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将比较结果用作pandas.DataFrame的索引_Python_Pandas - Fatal编程技术网

Python 将比较结果用作pandas.DataFrame的索引

Python 将比较结果用作pandas.DataFrame的索引,python,pandas,Python,Pandas,如上所述,whereNans是正确的,但是df[whereNans]没有得到我想要的。但是,df[df>3]可以得到我想要的 实际上,存储在whereNans中的索引与df>3中的索引相同。问题是什么?您似乎对此感到困惑,这是正确的行为,当掩码为True时,它将在该位置显示结果,当False时,它将显示NaN,因此实际上您将显示带有所有NaN的df 因为您有一个NaN值,它会为该位置返回NaN,如果该值为False,则只会得到NaN 如果与df>3版本进行比较,您会观察到相同的行为: impor

如上所述,
whereNans
是正确的,但是
df[whereNans]
没有得到我想要的。但是,
df[df>3]
可以得到我想要的


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

您似乎对此感到困惑,这是正确的行为,当掩码为
True
时,它将在该位置显示结果,当
False
时,它将显示
NaN
,因此实际上您将显示带有所有
NaN
的df

因为您有一个
NaN
值,它会为该位置返回
NaN
,如果该值为False,则只会得到
NaN

如果与
df>3
版本进行比较,您会观察到相同的行为:

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]
另外,为了说明这与
numpy
无关,使用pandas
isnull
可以得到相同的结果:

In[49]:
df[df>3]

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

您是否尝试过
df[df.isnull()]
?使用numpy会丢失有关索引的任何信息。@这与此无关,只是有点混淆,因为OP试图屏蔽
NaN
值,所以如果掩码为True,它会返回NaN,如果掩码为False,它也会返回NaN,如果列和索引值不是纯整数索引,那么当它成为一个重新索引操作时,会发生这种情况感谢@EdChum I对您的答案投了赞成票:)此外,StackOverflow的正常形式是接受您的问题的答案,如果他们已经解决了您的问题,如果没有,则评论和/或编辑您的问题以澄清您的问题question@IanS谢谢,不要认为我的评论是任何形式的攻击,这里的行为并不明显是的!这解释了一切!谢谢
In[50]:
df[df.isnull()]

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