Python で query() を使用してエレガントなクエリを実行する方法を 1 つの記事で学びましょう

青灯夜游
リリース: 2022-02-03 09:00:29
転載
9500 人が閲覧しました

この記事では、Python Pandas ライブラリを使用するためのちょっとしたテクニックについて説明し、query() を使用したエレガントなクエリ メソッドを紹介します。

Python で query() を使用してエレガントなクエリを実行する方法を 1 つの記事で学びましょう

Pandas が条件に基づいて指定されたデータを取得する場合、対応するコードは誰でも簡単に記述できると思いますが、クエリを使用したことがない場合は、次のように感動すると思います。そのシンプルさに感動しました!

一般的な使用法

最初に DataFrame を作成します。

import pandas as pd

df = pd.DataFrame(
    {'A': ['e', 'd', 'c', 'b', 'a'],
     'B': ['f', 'b', 'c', 'd', 'e'],
     'C': range(0, 10, 2),
     'D': range(10, 0, -2),
     'E.E': range(10, 5, -1)})
ログイン後にコピー

ここで、列 A の 文字が列 B に表示されるすべての行を選択します。まず、一般的な 2 つの書き方を見てみましょう。

>>> df[df['A'].isin(df['B'])]
   A  B  C   D  E.E
0  e  f  0  10   10
1  d  b  2   8    9
2  c  c  4   6    8
3  b  d  6   4    7
>>> df.loc[df['A'].isin(df['B'])]
   A  B  C   D  E.E
0  e  f  0  10   10
1  d  b  2   8    9
2  c  c  4   6    8
3  b  d  6   4    7
ログイン後にコピー

これを実現するには、以下の query() を使用します。

>>> df.query("A in B")
   A  B  C   D  E.E
0  e  f  0  10   10
1  d  b  2   8    9
2  c  c  4   6    8
3  b  d  6   4    7
ログイン後にコピー

query を使用した後のコードは簡潔で理解しやすく、メモリ消費量が少ないことがわかります。

複数条件クエリ

列 B に出現する列 A の文字をすべて選択し、列 C が列 D より小さいわかりました。

>>> df.query(&#39;A in B and C < D&#39;)
   A  B  C   D  E.E
0  e  f  0  10   10
1  d  b  2   8    9
2  c  c  4   6    8
ログイン後にコピー

ここで

and& で表すこともできます。

参照変数

外部定義変数は、変数名の前に @ を付けて式で使用することもできます。

>>> number = 5
>>> df.query(&#39;A in B & C > @number&#39;)
   A  B  C  D  E.E
3  b  d  6  4    7
ログイン後にコピー

インデックスの選択

列 A の文字が列 B に表示され、インデックスが 2 より大きい行をすべて選択します

>>> df.query(&#39;A in B and index > 2&#39;)
   A  B  C  D  E.E
3  b  d  6  4    7
ログイン後にコピー

複数のインデックスの選択

2 レベルのインデックス データフレームを作成します。

>>> import numpy as np
>>> colors = [&#39;yellow&#39;]*3 + [&#39;red&#39;]*2
>>> rank = [str(i) for i in range(5)]
>>> index = pd.MultiIndex.from_arrays([colors, rank], names=[&#39;color&#39;, &#39;rank&#39;])
>>> df = pd.DataFrame(np.arange(10).reshape(5, 2),columns=[&#39;A&#39;, &#39;B&#39;] , index=index)
>>> df = pd.DataFrame(np.arange(10).reshape(5, 2),columns=[&#39;A&#39;, &#39;B&#39;] , index=index)
>>> df
             A  B
color  rank      
yellow 0     0  1
       1     2  3
       2     4  5
red    3     6  7
       4     8  9
ログイン後にコピー

1.名前を持つインデックスが複数のレベルにある場合は、インデックス名を介して直接選択します。

>>> df.query("color == &#39;red&#39;")
            A  B
color rank      
red   3     6  7
      4     8  9
ログイン後にコピー

2. 名前のないインデックスが複数の階層にある場合は、インデックス レベルで選択します。

>>> df.index.names = [None, None]
>>> df.query("ilevel_0 == &#39;red&#39;")
       A  B
red 3  6  7
    4  8  9
>>> df.query("ilevel_1 == &#39;4&#39;")
       A  B
red 4  8  9
ログイン後にコピー

特殊文字スペースや、中央に演算子などのその他の特殊記号が含まれる列名には、バッククォートを使用する必要があります## #「##」。

>>> df.query(&#39;A == B | (C + 2 > `E.E`)&#39;)
   A  B  C  D  E.E
2  c  c  4  6    8
3  b  d  6  4    7
4  a  e  8  2    6
ログイン後にコピー

一般に、query() の使用法は比較的簡単で、すぐに使い始めることができ、コードの読みやすさも大幅に向上しています。 【関連する推奨事項:

Python3 ビデオ チュートリアル

]

以上がPython で query() を使用してエレガントなクエリを実行する方法を 1 つの記事で学びましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!