Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Memilih Baris dengan Cekap dalam Bingkai Data Pandas Berdasarkan Nilai Lajur?

Bagaimanakah Saya Boleh Memilih Baris dengan Cekap dalam Bingkai Data Pandas Berdasarkan Nilai Lajur?

Patricia Arquette
Patricia Arquetteasal
2024-12-25 16:02:15771semak imbas

How Can I Efficiently Select Rows in a Pandas DataFrame Based on Column Values?

Memilih Baris Berdasarkan Nilai Lajur dalam Panda

Seperti mana-mana pangkalan data hubungan, anda mungkin perlu memilih baris tertentu daripada DataFrame berdasarkan nilai dalam lajur tertentu. Untuk mencapai ini dengan lancar dalam Pandas, terdapat beberapa kaedah yang boleh anda gunakan.

Menapis dengan == dan isin

Untuk mendapatkan semula baris yang nilai lajurnya sepadan dengan nilai tertentu, manfaatkan operator ==:

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

Sebaliknya, jika anda ingin memilih baris yang nilai lajur tergolong dalam koleksi nilai, gunakan isin:

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

Menggabungkan Syarat dengan &

Untuk menggabungkan berbilang syarat dalam pilihan anda, sambungkannya dengan &:

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

Nota: Tanda kurung adalah penting di sini untuk memastikan penilaian yang betul.

Tidak Termasuk Nilai dengan != dan ~

Untuk mengecualikan baris dengan nilai lajur tertentu, gunakan !=:

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

Sebagai alternatif, untuk nilai di luar julat tertentu, tolakkan hasil isin menggunakan ~:

df = df.loc[~df['column_name'].isin(some_values)] # .loc is not in-place replacement

Contoh Aplikasi

Pertimbangkan perkara berikut 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})
print(df)

Memilih baris dengan nilai 'A' 'foo':

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

Memilih baris dengan nilai 'B' 'satu' atau 'tiga':

print(df.loc[df['B'].isin(['one','three'])])

Prestasi Dipertingkat dengan Pengindeksan

Untuk penapisan yang kerap operasi, adalah lebih cekap untuk mencipta indeks dahulu:

df = df.set_index(['B'])
print(df.loc['one'])

Sebagai alternatif, gunakan df.index.isin:

df.loc[df.index.isin(['one','two'])]

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memilih Baris dengan Cekap dalam 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