Python ';无效的类型比较';在代码中

Python ';无效的类型比较';在代码中,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框,它有许多列。这些列可能有3个值-True、False和NaN。我正在用字符串missing回复NaN。我的一列的示例值如下所示: ConceptTemp.ix[:,1].values 导致: array([ True, False, False, False, True, True, True, True, False, True], dtype=bool) 请注意,此特定列没有NaN,因此不缺少字符串 现在,我执行以下代码: ConceptTemp.ix[:,

我有一个
熊猫数据框
,它有许多列。这些列可能有3个值-True、False和NaN。我正在用字符串
missing
回复
NaN
。我的一列的示例值如下所示:

ConceptTemp.ix[:,1].values
导致:

array([ True, False, False, False,  True,  True,  True,  True, False,  True], dtype=bool)
请注意,此特定列没有
NaN
,因此不缺少
字符串

现在,我执行以下代码:

ConceptTemp.ix[:,1][ConceptTemp.ix[:,1] != 'missing'].values
要获取以下异常,请执行以下操作:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-47-0a0b76cf3ab5> in <module>()
----> 1 ConceptTemp.ix[:,1][ConceptTemp.ix[:,1] != 'missing'].values

E:\Anaconda2\lib\site-packages\pandas\core\ops.pyc in wrapper(self, other, axis)
    724                 other = np.asarray(other)
    725 
--> 726             res = na_op(values, other)
    727             if isscalar(res):
    728                 raise TypeError('Could not compare %s type with Series'

E:\Anaconda2\lib\site-packages\pandas\core\ops.pyc in na_op(x, y)
    680                 result = getattr(x, name)(y)
    681                 if result is NotImplemented:
--> 682                     raise TypeError("invalid type comparison")
    683             except AttributeError:
    684                 result = op(x, y)

TypeError: invalid type comparison
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1 ConceptTemp.ix[:,1][ConceptTemp.ix[:,1]!=“缺少”]。值
E:\Anaconda2\lib\site packages\pandas\core\ops.pyc在包装器中(self、other、axis)
724其他=np.asarray(其他)
725
-->726 res=na_op(值,其他)
727如果是isscalar(res):
728 raise TypeError('无法将%s类型与序列进行比较'
E:\Anaconda2\lib\site packages\pandas\core\ops.pyc在na_op(x,y)中
680结果=getattr(x,name)(y)
681如果结果未执行:
-->682 raise type错误(“无效类型比较”)
683除属性错误外:
684结果=op(x,y)
TypeError:类型比较无效
有人知道怎么修吗


非常感谢任何指针。

正如人们所评论的,在数组中组合类型(即带布尔值的字符串)有点奇怪。在布尔数组可能不是您认为的那样的情况下,您将得到结果。但是,如果您确实必须这样做,有几种方法可以做到这一点。第一种方法是使用
isin

In [40]: ConceptTemp.ix[:,0][~ConceptTemp.ix[:,0].isin(['missing'])].values
Out[40]:
         array([ True, False, False, False,  True,  True,  True,  True, False,  True], dtype=bool)
第二个是使用
apply
lambda

In [41]: ConceptTemp.ix[:,0][ConceptTemp.ix[:,0].apply(lambda x: x != 'missing')].values
Out[41]:
         array([ True, False, False, False,  True,  True,  True,  True, False,  True], dtype=bool)

请打印
ConceptTemp.ix[:,1].值
并返回报告。可能不完全是您要查找的内容,但能否使用
isin
ConceptTemp.ix[:,0][~ConceptTemp.ix[:,0].isin(['missing'])].values
我编辑了注释,您可以使用
~
操作符来反转选择,非常感谢。
lambda
做到了。我同意这种类型比较有点尴尬。但我这么做只是因为我想要原始
数据帧的子集。