Erfahren Sie in einem Artikel, wie Sie query() in Python verwenden, um elegante Abfragen durchzuführen

青灯夜游
Freigeben: 2022-02-03 09:00:29
nach vorne
9500 Leute haben es durchsucht

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!

Erfahren Sie in einem Artikel, wie Sie query() in Python verwenden, um elegante Abfragen durchzuführen

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!

Allgemeine Verwendung

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)})
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

可以看到使用 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
Nach dem Login kopieren

这里 and 也可以用 & 表示。

引用变量

表达式中也可以使用外部定义的变量,在变量名前用@标明。

>>> number = 5
>>> df.query('A in B & C > @number')
   A  B  C  D  E.E
3  b  d  6  4    7
Nach dem Login kopieren

索引选取

选取 A列字母出现在B列,并且索引大于2 的所有行。

>>> df.query('A in B and index > 2')
   A  B  C  D  E.E
3  b  d  6  4    7
Nach dem Login kopieren

多索引选取

创建一个两层索引的 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
Nach dem Login kopieren

1、当有多层索引有名称时,通过索引名称直接选取。

>>> df.query("color == 'red'")
            A  B
color rank      
red   3     6  7
      4     8  9
Nach dem Login kopieren

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
Nach dem Login kopieren

特殊字符

对于列名中间有空格或运算符等其他特殊符号,需要使用反引号 ``

>>> 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    6
Nach dem Login kopieren
Sie 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önnen und 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!

Verwandte Etiketten:
Quelle:juejin.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!