Dataframe返回无值

时间:2016-09-29 06:06:25

标签: python pandas indexing multiple-columns nan

我正在从GOT返回一个人物数据框,这样他们还活着并且预计会死,但前提是他们有一些房子名称。 (重要的人)。我期待它跳过NaN,但它也归还了它们。我附上了输出截图。请帮忙。

PS我没有附加任何剧透,所以你可以继续。

import pandas
df=pandas.read_csv('character-predictions.csv')
a=df[((df['actual']==1) & (df['pred']==0)) & (df['house'] !=None)]
b=a[['name', 'house']]

enter image description here

1 个答案:

答案 0 :(得分:2)

notnull需要ix才能选择列:

b = df.ix[((df['actual']==1) & (df['pred']==0)) & (df['house'].notnull()), ['name', 'house']]

样品:

df = pd.DataFrame({'house':[None,'a','b'],
                   'pred':[0,0,5],
                   'actual':[1,1,5],
                   'name':['J','B','C']})

print (df)
   actual house name  pred
0       1  None    J     0
1       1     a    B     0
2       5     b    C     5

b = df.ix[((df['actual']==1) & (df['pred']==0)) & (df['house'].notnull()), ['name', 'house']]
print (b)
  name house
1    B     a

您还可以查看pandas documentation

警告

  

必须注意的是,在python(和numpy)中,nan并不比较平等,但是没有。请注意,Pandas / numpy使用np.nan!= np.nan的事实,并像np.nan一样对待None。

In [11]: None == None
Out[11]: True

In [12]: np.nan == np.nan
Out[12]: False
  

因此,与上述相比,标量相等比较与None / np.nan无法提供有用的信息。

In [13]: df2['one'] == np.nan
Out[13]: 
a    False
b    False
c    False
d    False
e    False
f    False
g    False
h    False
Name: one, dtype: bool