Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ketahui cara menggunakan query() dalam Python untuk melaksanakan pertanyaan elegan dalam satu artikel

Ketahui cara menggunakan query() dalam Python untuk melaksanakan pertanyaan elegan dalam satu artikel

青灯夜游
青灯夜游ke hadapan
2022-02-03 09:00:299534semak imbas

Artikel ini akan membincangkan sedikit helah tentang menggunakan Python pustaka Panda dan memperkenalkan kaedah pertanyaan elegan menggunakan query().

Ketahui cara menggunakan query() dalam Python untuk melaksanakan pertanyaan elegan dalam satu artikel

Untuk Panda mendapatkan data tertentu mengikut syarat, saya percaya semua orang boleh menulis kod yang sepadan dengan mudah, tetapi jika anda belum menggunakan pertanyaan, saya percaya anda akan kagum dengan kesederhanaannya Kagum!

Penggunaan Umum

Buat DataFrame dahulu.

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)})

Kami kini memilih semua baris yang huruf dalam lajur A muncul dalam lajur B. Mari kita lihat dua cara biasa menulis dahulu.

>>> 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

Gunakan query() di bawah untuk mencapai matlamat ini.

>>> 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

Anda dapat melihat bahawa kod selepas menggunakan query adalah ringkas dan mudah difahami, dan ia menggunakan lebih sedikit memori.

Pertanyaan berbilang syarat

Pilih semua huruf dalam lajur A yang muncul dalam lajur B dan lajur C kurang daripada lajur D OK.

>>> 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
Di sini

juga boleh diwakili oleh and. &

Pembolehubah rujukan

Pembolehubah yang ditakrifkan secara luaran juga boleh digunakan dalam ungkapan, ditandakan dengan @ sebelum nama pembolehubah.

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

Pemilihan indeks

Pilih

semua huruf dalam lajur A muncul dalam lajur B, dan indeks lebih besar daripada 2 OK.

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

Pemilihan berbilang indeks

Buat Indeks DataFrame dua peringkat.

>>> 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 Apabila terdapat berbilang peringkat indeks dengan nama, pilih terus melalui nama indeks.

>>> df.query("color == 'red'")
            A  B
color rank      
red   3     6  7
      4     8  9
2. Apabila terdapat berbilang lapisan indeks yang tidak dinamakan, pilih mengikut tahap indeks.

>>> 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

Watak khas

Untuk nama lajur dengan ruang atau simbol khas lain seperti operator, anda perlu menggunakan tanda belakang

. ``

>>> 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
Secara amnya, penggunaan query() adalah agak mudah, anda boleh bermula dengan cepat, dan kebolehbacaan kod juga telah banyak dipertingkatkan.

[Cadangan berkaitan:

Tutorial video Python3]

Atas ialah kandungan terperinci Ketahui cara menggunakan query() dalam Python untuk melaksanakan pertanyaan elegan dalam satu artikel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam