Pandalar: dataframe'in tüm sütunlarında bir dize arayın


Bir pandas DataFrame’in her sütununda belirli bir dizeyi aramak ve en az bir sütunda dizeyi içeren satırları filtrelemek için aşağıdaki sözdizimini kullanabilirsiniz:

 #define filter
mask = np. column_stack ([df[col]. str . contains (r " my_string ", na= False ) for col in df])

#filter for rows where any column contains 'my_string'
df. loc [mask. any (axis= 1 )]

Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.

Örnek: Pandas DataFrame’in tüm sütunlarında bir dize arayın

Bir takımdaki çeşitli basketbol oyuncularının birinci ve ikinci rolleri hakkında bilgi içeren aşağıdaki pandalar DataFrame’e sahip olduğumuzu varsayalım:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   ' first_role ': ['P Guard', 'P Guard', 'S Guard', 'S Forward',
                                  'P Forward', 'Center', 'Center', 'Center'],
                   ' second_role ': ['S Guard', 'S Guard', 'Forward', 'S Guard',
                                   'S Guard', 'S Forward', 'P Forward', 'P Forward']})

#view DataFrame
print (df)

  player first_role second_role
0 AP Guard S Guard
1 BP Guard S Guard
2 CS Guard Forward
3DS Forward S Guard
4 EP Forward S Guard
5 F Center S Forward
6 G Center P Forward
7 H Center P Forward

Aşağıdaki kod, herhangi bir sütunda “Guard” dizesinin göründüğü satırlar için pandalar DataFrame’in nasıl filtreleneceğini gösterir:

 import numpy as np

#define filter
mask = np. column_stack ([df[col]. str . contains (r " Guard ", na= False ) for col in df])

#filter for rows where any column contains 'Guard'
df. loc [mask. any (axis= 1 )]

        player first_role second_role
0 A P Guard S Guard
1 B P Guard S Guard
2 C S Guard Forward
3 D S Forward S Guard
4 E P Forward S Guard

Ortaya çıkan DataFrame’in her satırının en az bir sütunda “Guard” dizesini içerdiğini unutmayın.

Pandalarda “OR” operatörünü ( | ) kullanarak en az bir sütunda birkaç dizeden birinin göründüğü satırları da filtreleyebilirsiniz.

Örneğin, aşağıdaki kod, en az bir sütunda “P Guard” veya “Center” ifadesinin göründüğü satırların nasıl filtreleneceğini gösterir:

 import numpy as np

#define filter
mask = np. column_stack ([df[col]. str . contains (r " P Guard|Center ", na= False ) for col in df])

#filter for rows where any column contains 'P Guard' or 'Center'
df. loc [mask. any (axis= 1 )]

        player first_role second_role
0 A P Guard S Guard
1 B P Guard S Guard
5 F Center S Forward
6 G Center P Forward
7 H Center P Forward

Ortaya çıkan DataFrame’deki her satırın en az bir sütunda “P Guard” veya “Center” içerdiğini unutmayın.

Not : na=False argümanını include() fonksiyonuna dahil etmeniz önemlidir, aksi takdirde DataFrame’de NaN değerleri mevcutsa hatayla karşılaşırsınız.

Ek kaynaklar

Aşağıdaki eğitimlerde pandalarda diğer yaygın filtreleme işlemlerinin nasıl gerçekleştirileceği açıklanmaktadır:

Pandas DataFrame’i sütun değerlerine göre filtreleme
Pandas DataFrame satırlarını tarihe göre filtreleme
Pandas DataFrame’i birden çok koşulda filtreleme

Yorum ekle

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