Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Memilih Data dengan Cekap daripada Bingkai Data Pandas Berdasarkan Nilai Lajur?

Bagaimana untuk Memilih Data dengan Cekap daripada Bingkai Data Pandas Berdasarkan Nilai Lajur?

Linda Hamilton
Linda Hamiltonasal
2024-12-24 01:24:11452semak imbas

How to Efficiently Select Data from a Pandas DataFrame Based on Column Values?

Cara Memilih Data daripada DataFrame Berdasarkan Nilai Lajur

Dalam SQL, pertanyaan biasa untuk memilih baris berdasarkan nilai lajur akan kelihatan seperti:

SELECT *
FROM table
WHERE column_name = some_value

Untuk mencapai hasil yang sama dalam Panda, terdapat beberapa pendekatan:

Padanan Nilai Tepat

Untuk memilih baris yang nilai lajurnya bersamaan dengan nilai tertentu (sesetengah nilai), gunakan operator == dalam .loc:

df.loc[df['column_name'] == some_value]

Pemasukan dan Pengecualian Nilai

Untuk memilih baris di mana nilai lajur terkandung dalam senarai (some_values), gunakan fungsi isin:

df.loc[df['column_name'].isin(some_values)]

Untuk mengecualikan nilai tertentu, nafikan Siri boolean yang dikembalikan oleh isin:

df = df.loc[~df['column_name'].isin(some_values)] # Note: This is not an in-place operation

Menggabungkan Syarat

Berbilang syarat boleh digabungkan menggunakan operator logik seperti & (DAN) dan | (ATAU):

df.loc[(df['column_name'] >= A) & (df['column_name'] <= B)]

Perhatikan bahawa tanda kurungan diperlukan untuk memastikan keutamaan pengendali yang betul.

Contoh

Pertimbangkan DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
                   'B': 'one one two three two two one three'.split(),
                   'C': np.arange(8), 'D': np.arange(8) * 2})

Untuk memilih baris dengan 'A' sama 'foo':

print(df.loc[df['A'] == 'foo'])

Hasil:

     A      B  C  D
0  foo    one  0  0
2  foo    two  2  4
4  foo    two  4  8
6  foo    one  6  12
7  foo  three  7  14

Pengoptimuman untuk Pemilihan Berbilang Nilai

Untuk memilih baris berdasarkan berbilang nilai, ia adalah lebih cekap untuk mencipta indeks dan menggunakan .loc dengan df.index.isin. Ini mengelakkan berbilang panggilan kepada isin, menghasilkan prestasi yang lebih baik.

df = df.set_index(['B'])
print(df.loc[df.index.isin(['one','two'])])

Hasil:

       A  C  D
B
one  foo  0  0
one  bar  1  2
one  foo  6  12
two  foo  2  4
two  foo  4  8
two  bar  5  10

Atas ialah kandungan terperinci Bagaimana untuk Memilih Data dengan Cekap daripada Bingkai Data Pandas Berdasarkan Nilai Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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