Pandalar: dataframe dize sütununa göre nasıl sıralanır


Belirli bir dize sütununun değerlerine göre bir panda DataFrame’in satırlarını sıralamak için aşağıdaki yöntemleri kullanabilirsiniz:

Yöntem 1: Dize sütununa göre sıralama (sütun yalnızca karakterler içerdiğinde)

 df = df. sort_values (' my_string_column ')

Yöntem 2: Dize sütununa göre sıralama (sütun karakter ve sayı içerdiğinde)

 #create 'sort' column that contains digits from 'my_string_column'
df[' sort '] = df[' my_string_column ']. str . extract (' (\d+) ', expand= False ). astype (int)

#sort rows based on digits in 'sort' column
df = df. sort_values (' sort ')

Aşağıdaki örnekler her yöntemin pratikte nasıl kullanılacağını göstermektedir.

Örnek 1: Dize sütununa göre sıralama (sütun yalnızca karakterler içerdiğinde)

Bir bakkalda çeşitli ürünlerin satışı hakkında bilgi içeren aşağıdaki pandalar DataFrame’e sahip olduğumuzu varsayalım:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' product ': ['Apples', 'Oranges', 'Bananas', 'Lettuce', 'Beans'],
                   ' sales ': [18, 22, 19, 14, 29]})

#view DataFrame
print (df)

   product sales
0 Apples 18
1 Oranges 22
2 Bananas 19
3 Lettuce 14
4 Beans 29

DataFrame’in satırlarını ürün sütunundaki dizelere göre sıralamak için aşağıdaki sözdizimini kullanabiliriz:

 #sort rows from A to Z based on string in 'product' column
df = df. sort_values (' product ')

#view updated DataFrame
print (df)

   product sales
0 Apples 18
2 Bananas 19
4 Beans 29
3 Lettuce 14
1 Oranges 22

Satırların artık Ürün sütunundaki dizelere göre A’dan Z’ye sıralandığını unutmayın.

Bunun yerine Z’den A’ya sıralama yapmak istiyorsanız, artan=False argümanını eklemeniz yeterlidir:

 #sort rows from Z to A based on string in 'product' column
df = df. sort_values (' product ', ascending= False )

#view updated DataFrame
print (df)

   product sales
1 Oranges 22
3 Lettuce 14
4 Beans 29
2 Bananas 19
0 Apples 18

Satırların artık Ürün sütunundaki dizelere göre Z’den A’ya sıralandığını unutmayın.

Örnek 2: Dize sütununa göre sıralama (sütun karakter ve sayı içerdiğinde)

Bir bakkalda çeşitli ürünlerin satışı hakkında bilgi içeren aşağıdaki pandalar DataFrame’e sahip olduğumuzu varsayalım:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' product ': ['A3', 'A5', 'A22', 'A50', 'A2', 'A7', 'A9', 'A13'],
                   ' sales ': [18, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  product sales
0 A3 18
1 A5 22
2 A22 19
3 A50 14
4 A2 14
5 A7 11
6 A9 20
7 A13 28

Ürün sütunundaki dizelerin hem karakterleri hem de sayıları içerdiğini unutmayın.

DataFrame’in satırlarını ürün sütunundaki değerleri kullanarak sıralamaya çalışırsak, dizeler sayılara göre doğru sırada sıralanmayacaktır:

 import pandas as pd

#sort rows based on strings in 'product' column
df = df. sort_values (' product ')

#view updated DataFrame
print (df)

  product sales
7 A13 28
4 A2 14
2 A22 19
0 A3 18
1 A5 22
3 A50 14
5 A7 11
6 A9 20

Bunun yerine, yalnızca ürün sütunundaki sayıları içeren sort adı verilen yeni bir geçici sütun oluşturmamız, ardından sıralama sütunundaki değerlere göre sıralamamız ve ardından sütunu tamamen silmemiz gerekir:

 import pandas as pd

#create new 'sort' column that contains digits from 'product' column
df[' sort '] = df[' product ']. str . extract (' (\d+) ', expand= False ). astype (int)

#sort rows based on digits in 'sort' column
df = df. sort_values (' sort ')

#drop 'sort' column
df = df. drop (' sort ', axis= 1 )

#view updated DataFrame
print (df)

  product sales
4 A2 14
0 A3 18
1 A5 22
5 A7 11
6 A9 20
7 A13 28
2 A22 19
3 A50 14

Artık ürün sütunundaki satırların dizelere göre sıralandığına ve sayıların doğru sırada sıralandığına dikkat edin.

Not : Pandaların sort_values() işlevinin tam belgelerini burada bulabilirsiniz.

Ek kaynaklar

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

Pandalar: tarihe göre nasıl sıralanır
Pandalar: Sütunlar ada göre nasıl sıralanır
Pandalar: hem dizine hem de sütuna göre nasıl sıralama yapılır

Yorum ekle

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