Boolean sütunlarını kullanarak pandas dataframe'i filtreleme


Pandas DataFrame’deki satırları Boolean sütun değerlerine göre filtrelemek için aşağıdaki yöntemleri kullanabilirsiniz:

Yöntem 1: DataFrame’i Boolean sütununa göre filtreleme

 #filter for rows where value in 'my_column' is True
df. loc [df. my_column ]

Yöntem 2: DataFrame’i birden çok Boolean sütununa göre filtreleme

 #filter for rows where value in 'column1' or 'column2' is True
df. loc [df. column1 | df. column2 ]

Aşağıdaki örnekler, her yöntemin pratikte aşağıdaki pandalar DataFrame ile nasıl kullanılacağını gösterir:

 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

Örnek 1: DataFrame’i Boolean sütununa göre filtreleme

Pandaların DataFrame’ini yalnızca all_star sütunundaki değerin True olduğu satırları içerecek şekilde filtrelemek için aşağıdaki sözdizimini kullanabiliriz:

 #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

DataFrame’in yalnızca all_star sütunundaki değeri True olan satırları içerecek şekilde filtrelendiğini unutmayın.

Bunun yerine all_star’ın False olduğu satırları filtrelemek istiyorsanız, sütun adının önüne yaklaşık işareti ( ~ ) yazmanız yeterlidir:

 #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 artık yalnızca all_star sütunundaki değeri False olan satırları içerecek şekilde filtrelendi.

Örnek 2: DataFrame’i birden çok Boolean sütununa göre filtreleme

Pandaların DataFrame’ini yalnızca all_star sütununun veya başlangıç sütununun değerinin True olduğu satırları içerecek şekilde filtrelemek için aşağıdaki sözdizimini kullanabiliriz:

 #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

DataFrame’in yalnızca all_star veya başlangıç sütunundaki değeri True olan satırları içerecek şekilde filtrelendiğini unutmayın.

All_star ve starter sütunlarındaki değeri True olan satırları filtrelemek istiyorsanız | yerine & operatörünü kullanabilirsiniz . Şebeke:

 #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

Artık DataFrame, yalnızca all_star ve başlangıç sütunlarındaki değerin True olduğu satırları içerecek şekilde filtrelendi.

İlgili: Pandalar’da loc ve iloc arasındaki fark

Ek kaynaklar

Aşağıdaki eğitimlerde pandalarda diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

Pandalar: bir boole serisi kullanarak DataFrame’den satırları seçin
Pandalar: koşula dayalı bir boole sütunu nasıl oluşturulur
Pandalar: Boole değerleri tam sayı değerlerine nasıl dönüştürülür?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir