Python

Python基礎:queryで変数を使う場合

スポンサーリンク

はじめに

今回は小ネタです。記事にするほどでもないのですが、せっかくなのでメモを残しておきます。query()メソッドの中で変数を使う方法です。query()メソッドの中では、普通に変数を参照しようとするとエラーになります。簡単な内容ですが、紹介しておきますね。

サンプルデータの作成

今回も、どうぶつえんの日別の来場者数のデータ、という想定にしましょう。以下のコードでサンプルデータを作成してください。

# ライブラリのインポート
import pandas as pd

# サンプルデータの作成
date_list=pd.date_range('2020-08-11','2020-09-30')
visitors_list=np.random.randint(40,200,51)
df_date=pd.DataFrame({'日付':date_list,'来場者数':visitors_list})
df_date.head()

query()メソッドの中で変数を使う

今回は、全期間での来場者数の平均を求めて、平均来場者数以上のデータを抽出してみましょう。まずは、平均来場者数「visitors_mean」を求めてます。

visitors_mean=df_date['来場者数'].mean()
print('%.1f'%visitors_mean)

平均来場者数が求まりました。平均来場者以上のデータを抽出してみましょう。

df_date.query('来場者数>visitors_mean')

しかし、これを実行すると以下のようにエラーになってしまいます。

実は、query()メソッドの中では、そのまま変数を使うことができません。query()メソッドの中での条件文字列の中で変数を使用するには、変数名の前に@をつける必要があります。

やってみましょう。

df_date.query('来場者数>@visitors_mean').head()

今度はうまくいきました。私はこれを知らなかったので、なんでエラーなんだろ?ってなりました。ということでメモを残しておきます。

スポンサーリンク

まとめ

いかがでしょうか?知っている人にとっては、「当たり前」だったかもしれませんね。query()メソッドはよく使うので、条件文字列の中で変数が使えないと困ってしまいますよね。覚えておきましょう。

コメント

タイトルとURLをコピーしました