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?