記号の入った列名を指定したい
queryメソッドに記号の入った列名を指定するとエラーになってしまいます。
エスケープなど試してみたのですがダメでした。なにか方法はあるのでしょうか?
該当のソースコード
Python
1df.query("売上(店舗) == 0")
下記のようなエラーメッセージが表示されています。
Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/computation/scope.py", line 188, in resolve return self.resolvers[key] File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/collections/__init__.py", line 891, in __getitem__ return self.__missing__(key) # support subclasses that define __missing__ File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/collections/__init__.py", line 883, in __missing__ raise KeyError(key) KeyError: '売上'
Python
1print(df.columns) 2###結果 Index(['商品番号', '売上(店舗)'], dtype='object')
どのようなエラーですか?
売上がファンクションとして認識されてしまっているようです。
https://teratail.com/help/question-tips#questionTips3-4
実際に起きた結果を示しましょう。例えば、「○○というエラーが表示された」、「レイアウトがこのように崩れてしまった」等です。あなたの想像ではなく、実際に起きたことを述べましょう。
実際に起きたことと、あなたの予想をはっきり分けて書きましょう。
カラム名をクオートすればいい話だと思いますが、どのデータベースを使ってるかによってやり方が変わることもありますね。というか、自分だったらカラム名を修正するし、できないなら適当な view を作るかなあ。
初心者なもので質問に不備があり、すみません。
おっと失礼。データベースの話じゃなかったですね。
データはCSVから読み込んだものです。カラム名を変更してしまうのが手っ取り早いですよね。
できれば変更せずにやりたいです。
print(df.columns) の結果を追記してください
自信ないんでこっちに(汗
df[df['売上(店舗)'] == 0]
昔ながら?の方法?
df[df['売上(店舗)'] == 0]
でやってみようと思います。
質問の仕方が下手ですみませんでした。色々と勉強になりました。
まだ勉強途中でして、これからもお世話になるかと思いますが皆様よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー