簡體   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