繁体   English   中英

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

[英]use the comparison result as the index of pandas.DataFrame

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相同。 问题是什么?

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

因为你有一个NaN值,它会为该位置返回NaN ,如果它为False,你就得到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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM