私はjupyterノートブックで作業しており、列に2つの異なる回答のオブジェクトを作成しようとしています。すべての「はい」の応答と「いいえ」の応答の類似性を確認するため。
次のコードを使用すると、次のようなエラーが発生します。UndefinedVariableError:name'No 'is not defined
df_yes=df.query('No-show == \"Yes\"')
df_no=df.query('No-show == \"No\"')
df_yesのみを含めても同じエラーが発生するため、列名「No-show」と関係があると考えました。だから私は別の列でそれを試しました、そして確かに、それはうまくいきます。
それで、誰かが私がこのコードブロックで間違っていることを教えてくれるので、私はそれを二度としないでしょうか?ありがとう!
この例を観察してください:
>>> import pandas as pd
>>> d = {'col1': ['Yes','No'], 'col2': ['No','No']}
>>> df = pd.DataFrame(data=d)
>>> df.query('col1 == \"Yes\"')
col1 col2
0 Yes No
>>> df.query('col2 == \"Yes\"')
Empty DataFrame
Columns: [col1, col2]
Index: []
>>>
すべてが期待どおりに機能しているようです。しかし、私が変更した場合col1
とcol2
するcol-1
とcol-2
、それぞれ:
>>> d = {'col-1': ['Yes','No'], 'col-2': ['No','No']}
>>> df = pd.DataFrame(data=d)
>>> df.query('col-1 == \"Yes\"')
...
pandas.core.computation.ops.UndefinedVariableError: name 'col' is not defined
ご覧のとおり、問題は-
列名に使用するマイナス()です。実際のところ、No
エラーメッセージでは列のNo-show
値No
ではなく参照しているため、さらに不運でした。
したがって、最善の解決策(および一般的なベストプラクティス)は、列に別の名前を付けることです(少なくとも、Pythonでは、変数の名前にマイナスを含めることはできません)。たとえば、No_show
。このデータフレームが自分で作成されていない場合(たとえば、csv
ファイルからデータを読み取る場合)、列の名前を適切に変更するのが一般的な方法です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加