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 8
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 9
>>> df.query("color == &#39;red&#39;") A B color rank red 3 6 7 4 8 9
>>> 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 6
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!