Rumah > Artikel > pembangunan bahagian belakang > Ketahui cara menggunakan query() dalam Python untuk melaksanakan pertanyaan elegan dalam satu artikel
Artikel ini akan membincangkan sedikit helah tentang menggunakan Python pustaka Panda dan memperkenalkan kaedah pertanyaan elegan menggunakan query().
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!
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(&#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 8Di 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(&#39;A in B & C > @number&#39;) A B C D E.E 3 b d 6 4 7
Pemilihan indeks
Pilihsemua huruf dalam lajur A muncul dalam lajur B, dan indeks lebih besar daripada 2 OK.
>>> df.query(&#39;A in B and index > 2&#39;) 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 = [&#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 91 Apabila terdapat berbilang peringkat indeks dengan nama, pilih terus melalui nama indeks.
>>> df.query("color == &#39;red&#39;") A B color rank red 3 6 7 4 8 92. Apabila terdapat berbilang lapisan indeks yang tidak dinamakan, pilih mengikut tahap indeks.
>>> 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
Watak khas
Untuk nama lajur dengan ruang atau simbol khas lain seperti operator, anda perlu menggunakan tanda belakang . ``
>>> 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 6Secara 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!