【问题标题】:Dataframe returning None value数据框返回无值
【发布时间】:2017-02-07 07:45:45
【问题描述】:

我正在从 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']]

【问题讨论】:

  • 您不能在比较中使用np.nannp.nan == np.nan 返回False。此外,您正在尝试比较np.nan != None。即使是天真的解释也会告诉你这是真的。 @jezrael 在下面的回答可以满足您的需求。
  • @piRSquared - 谢谢你的解释。
  • @piRSquared 谢谢,不知道 'nan' 不能解释为 'none',逻辑上感觉都一样

标签: python pandas indexing multiple-columns nan


【解决方案1】:

您需要notnullix 来选择列:

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 的比较不相等,但 None 的比较。请注意,Pandas/numpy 使用 np.nan != np.nan 的事实,并将 None 视为 np.nan。

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

【讨论】:

    猜你喜欢
    • 2017-11-26
    • 1970-01-01
    • 2019-03-07
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 2018-04-02
    • 1970-01-01
    相关资源
    最近更新 更多