2016-03-28 14 views
1

私はノートブックを作成していますが、ある時点でブール値のマスクを作成する必要があります。私はpandasバージョン17.1を使用しています。あるjupyterノートブックでNOT演算子〜を使う方法は?

が、私はそう~maskがで~Falseを実行している、TypeError: bad operand type for unary ~: 'float'

実際にエラーが発生し、しかし、私が論理演算子ipythonノートブックにない~を使用することができませんように見える

mask=df.var.str.contains('hello') 

生成しますセルが私に与えます:-1

何が起こっているのですか?

+0

この不幸な変数名は残念です。私の例では、変数は実際にはmyvariableと呼ばれています。だから、varとの混乱はありません –

+3

私のために働く。実際に問題を再現する[mcve]を投稿してください。 – Goyo

+1

おそらく 'df.myvariable'にNaNがあります。 – TomAugspurger

答えて

4

実際にコードを実行することはできませんでしたが、~のためではなく、ノートブックのためではありません。.varという表記は、あなたが期待していないことをします。

これは正常に動作します:

mask=df['var'].str.contains('hello') 
~mask 

をしかし、この点に注意してください。一般的には

>>> type(df.var) 
instancemethod 

をドット表記を使用しているとき、あなたは名前と既存の方法の間の衝突を考慮しなければなりません。たとえば、sizeという名前の列で同様の問題が発生します。

+1

'〜 'も使います。あなたがregex-onlyの解決をしたいなら、後の目的のために、否定的なlookbehind regexテストを行うことができます - 'df ['var'] str.contains(r '^(?:(?! hello))* $')' – Zero

+0

ありがとう、@ジョンガンツ - まだあなたが誰かわからない:-) –

関連する問題