Heim >Backend-Entwicklung >Python-Tutorial >Erfahren Sie in einem Artikel, wie Sie query() in Python verwenden, um elegante Abfragen durchzuführen
In diesem Artikel geht es um einen kleinen Trick zur Verwendung der Python Pandas-Bibliothek und um eine Einführung in die elegante Abfragemethode mit query(). Ich hoffe, dass sie für alle hilfreich ist!
Damit Pandas bestimmte Daten basierend auf Bedingungen erhalten kann, kann jeder meiner Meinung nach problemlos den entsprechenden Code schreiben. Wenn Sie jedoch noch keine Abfrage verwendet haben, werden Sie meiner Meinung nach von der Einfachheit beeindruckt sein!
Erstellen Sie zunächst einen 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)})
Wir wählen nun alle Zeilen aus, in denen die Buchstaben in Spalte A in Spalte B erscheinen. Schauen wir uns zunächst zwei gängige Schreibweisen an.
>>> 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
Verwenden Sie query()
unten zur Implementierung. 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
后的代码简洁易懂,并且它对于内存的消耗也更小。
多条件查询
选取 A列字母出现在B列,并且C列小于D列 的所有行。
>>> df.query('A in B and C < D') 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('A in B & C > @number') A B C D E.E 3 b d 6 4 7
索引选取
选取 A列字母出现在B列,并且索引大于2 的所有行。
>>> df.query('A in B and index > 2') A B C D E.E 3 b d 6 4 7
多索引选取
创建一个两层索引的 DataFrame。
>>> import numpy as np >>> colors = ['yellow']*3 + ['red']*2 >>> rank = [str(i) for i in range(5)] >>> index = pd.MultiIndex.from_arrays([colors, rank], names=['color', 'rank']) >>> df = pd.DataFrame(np.arange(10).reshape(5, 2),columns=['A', 'B'] , index=index) >>> df = pd.DataFrame(np.arange(10).reshape(5, 2),columns=['A', 'B'] , 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 == 'red'") A B color rank red 3 6 7 4 8 9
2、当有多层索引无名时,通过索引级别来选取。
>>> df.index.names = [None, None] >>> df.query("ilevel_0 == 'red'") A B red 3 6 7 4 8 9 >>> df.query("ilevel_1 == '4'") A B red 4 8 9
特殊字符
对于列名中间有空格或运算符等其他特殊符号,需要使用反引号 ``
>>> df.query('A == B | (C + 2 > `E.E`)') A B C D E.E 2 c c 4 6 8 3 b d 6 4 7 4 a e 8 2 6Sie können sehen, dass der Code nach der Verwendung von
query
prägnant und leicht verständlich ist und weniger Speicher verbraucht.
Abfrage mit mehreren Bedingungen
Wählen Sie 🎜Alle Zeilen aus, in denen die Buchstaben in Spalte A in Spalte B erscheinen und Spalte C kleiner als Spalte D ist 🎜. 🎜rrreee🎜Hier könnenund
auch durch &
dargestellt werden. 🎜🎜🎜Referenzvariablen🎜🎜🎜Extern definierte Variablen können auch in Ausdrücken verwendet werden, gekennzeichnet mit @ vor dem Variablennamen. 🎜rrreee🎜🎜Indexauswahl🎜🎜🎜Wählen Sie 🎜Alle Zeilen aus, in denen die Buchstaben in Spalte A in Spalte B erscheinen und der Index größer als 2 ist🎜. 🎜rrreee🎜🎜Multi-Index-Auswahl🎜🎜🎜Erstellen Sie einen DataFrame mit zwei Indexebenen. 🎜rrreee🎜1. Wenn mehrere Indexebenen mit Namen vorhanden sind, wählen Sie diese direkt anhand des Indexnamens aus. 🎜rrreee🎜2. Wenn es mehrere Ebenen unbenannter Indizes gibt, wählen Sie nach Indexebene aus. 🎜rrreee🎜🎜Sonderzeichen🎜🎜🎜Für Spaltennamen mit Leerzeichen oder anderen Sonderzeichen wie Operatoren in der Mitte müssen Sie Backticks verwenden „. 🎜rrreee🎜Im Allgemeinen ist die Verwendung von query() relativ einfach, man kann schnell loslegen und auch die Lesbarkeit des Codes wurde deutlich verbessert. 🎜🎜【Verwandte Empfehlung: 🎜Python3-Video-Tutorial🎜】🎜
Das obige ist der detaillierte Inhalt vonErfahren Sie in einem Artikel, wie Sie query() in Python verwenden, um elegante Abfragen durchzuführen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!