【问题标题】:difference between "!=" and "not_equal" in pandas熊猫中“!=”和“not_equal”之间的区别
【发布时间】:2013-02-21 05:28:46
【问题描述】:

DataFrame 中选择时:

使用not_equal 给出正确的结果:

d[not_equal(d.something,None)]

但是使用!= 不会:

d[d.something != None] 

这是为什么?

更新,d.something dtype('float64'), 如果我尝试选择 NaN 值,情况也是如此 d[d.something != nan]

【问题讨论】:

  • not_equal 是什么? (是np.not_equal?)
  • @DSM 我的错误,感谢您在那个问题上叫我 :) 我很困惑,因为我认为 PEP8 说 test None with is... :s
  • 在这种情况下你能提供d.something的值吗?
  • 是的,not_equal 是 numpy.not_equal
  • d.something 的值是多少? not_equal(d.something,None) 的结果是什么? d.something != None 的结果是什么?

标签: python pandas


【解决方案1】:

我将回答一点“如果我尝试选择 NaN 值 d[d.something != nan]”,情况也是如此。

您需要注意 NaN 不等于另一个 NaN:

In [40]: numpy.NaN == numpy.NaN
Out[40]: False

In [41]: numpy.NaN != numpy.NaN
Out[41]: True

这似乎倒退了。但是,当您按照“如果它不是数字,它不能等于任何东西”的思路来思考第一个问题时,它就会变得更加清晰。 == 将始终返回 FalseNaN 作为任一侧。如果您将a != b 解释为not (a == b),则第二个也有意义。这可以解释部分问题。您的d[d.something != NaN] 将始终返回d

我将通过深入研究代码来进一步研究其他问题。

【讨论】:

    猜你喜欢
    • 2018-03-07
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 2017-01-11
    • 2021-05-08
    • 2017-12-05
    • 1970-01-01
    相关资源
    最近更新 更多