2016-06-23 12 views
0

私は多くの列を持つpandas dataframeを持っています。これらの列には、True、False、NaNの3つの値があります。私はNaNの文字列をmissingにしています。コード内の「無効な型の比較」

ConceptTemp.ix[:,1].values 

をもたらす:この特定の列がないNaN、したがってないmissingストリングを有していなかったこと

array([ True, False, False, False, True, True, True, True, False, True], dtype=bool) 

注次のように私の列のいずれかのサンプル値です。次の例外を取得するには

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 

誰かがそれを修正する方法を知っていますか?

いずれのポインタも高く評価されます。

+0

です。 – piRSquared

+0

おそらくあなたが探しているものではありませんが、isinを使用できますか?値 ' – johnchase

+0

コメントを編集して、 '〜'演算子を使用して選択範囲を逆転させることができました。これは、 '〜' ConceptTemp.ix [〜、ConceptTemp.ix [:、0] .isin([' missing ']) – johnchase

答えて

3

人々がコメントしたように、配列の型(つまりブール値を持つ文字列)を結合するのはちょっと変です。ブール値の配列があなたが思うものではないかもしれない結果を得るでしょう。しかし、絶対にする必要がある場合は、これを行うことについて行くことができるいくつかの方法があります。最初は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) 

第二は、[:, 1] .values` `ConceptTemp.ixを印刷して、戻って報告してくださいapplylambda

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) 
+0

ありがとう。ラムダはそれをしました。私はそれが少し厄介な、このタイプの比較だと同意します。しかし、私は元の 'dataframe'のサブセットがほしいと思っていました。 – Patthebug

関連する問題