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

青灯夜游
Lepaskan: 2022-02-03 09:00:29
ke hadapan
9500 orang telah melayarinya

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)})
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk
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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk
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
Salin selepas log masuk
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
Salin selepas log masuk

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
Salin selepas log masuk
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!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!