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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *