Cara memfilter pandas dataframe menggunakan kolom boolean
Anda dapat menggunakan metode berikut untuk memfilter baris dalam pandas DataFrame berdasarkan nilai kolom Boolean:
Metode 1: Filter DataFrame berdasarkan kolom Boolean
#filter for rows where value in 'my_column' is True df. loc [df. my_column ]
Metode 2: Filter DataFrame berdasarkan beberapa kolom Boolean
#filter for rows where value in 'column1' or 'column2' is True df. loc [df. column1 | df. column2 ]
Contoh berikut menunjukkan cara menggunakan setiap metode dalam praktik dengan pandas DataFrame berikut:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G'], ' points ': [18,20, 25, 40, 34, 32, 19], ' all_star ': [True, False, True, True, True, False, False], ' starter ': [False, True, True, True, False, False, False]}) #view DataFrame print (df) team points all_star starter 0 A 18 True False 1 B 20 False True 2 C 25 True True 3 D 40 True True 4 E 34 True False 5 F 32 False False 6 G 19 False False
Contoh 1: Filter DataFrame berdasarkan kolom Boolean
Kita dapat menggunakan sintaks berikut untuk memfilter pandas DataFrame agar hanya berisi baris yang nilai di kolom all_star adalah True:
#filter for rows where 'all_star' is True df. loc [df. all_star ] team points all_star starter 0 A 18 True False 2 C 25 True True 3 D 40 True True 4 E 34 True False
Perhatikan bahwa DataFrame telah difilter agar hanya berisi baris yang nilainya di kolom all_star adalah True.
Jika Anda ingin memfilter baris yang all_starnya False, cukup ketikkan tanda gelombang ( ~ ) di depan nama kolom:
#filter for rows where 'all_star' is False df. loc [ ~ df. all_star ] team points all_star starter 1 B 20 False True 5 F 32 False False 6 G 19 False False
DataFrame kini telah difilter agar hanya berisi baris yang nilainya di kolom all_star adalah False.
Contoh 2: Filter DataFrame berdasarkan beberapa kolom Boolean
Kita dapat menggunakan sintaks berikut untuk memfilter pandas DataFrame agar hanya berisi baris dengan nilai kolom all_star atau kolom awal adalah True:
#filter for rows where 'all_star' or 'starter' is True df. loc [df. all_star | df. starter ] team points all_star starter 0 A 18 True False 1 B 20 False True 2 C 25 True True 3 D 40 True True 4 E 34 True False
Perhatikan bahwa DataFrame telah difilter agar hanya berisi baris yang nilainya di kolom all_star atau starter adalah True.
Jika Anda ingin memfilter baris yang nilainya di kolom all_star dan starter adalah True, Anda dapat menggunakan operator & alih-alih | operator:
#filter for rows where 'all_star' and 'starter' is True df. loc [df. all_star & df. starter ] team points all_star starter 2 C 25 True True 3 D 40 True True
Sekarang DataFrame telah difilter agar hanya berisi baris yang nilai di kolom all_star dan starter adalah True.
Terkait: Perbedaan antara loc dan iloc di Pandas
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di panda:
Pandas: pilih baris dari DataFrame menggunakan seri boolean
Pandas: cara membuat kolom boolean berdasarkan kondisi
Pandas: Cara mengubah nilai boolean menjadi nilai integer