Pandas: cara mengurutkan dataframe berdasarkan kolom string
Anda dapat menggunakan metode berikut untuk mengurutkan baris pandas DataFrame berdasarkan nilai kolom string tertentu:
Metode 1: Urutkan berdasarkan kolom string (bila kolom hanya berisi karakter)
df = df. sort_values (' my_string_column ')
Metode 2: Urutkan berdasarkan kolom string (bila kolom berisi karakter dan angka)
#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 ')
Contoh berikut menunjukkan cara menggunakan masing-masing metode dalam praktik.
Contoh 1: Urutkan berdasarkan kolom string (jika kolom hanya berisi karakter)
Misalkan kita memiliki pandas DataFrame berikut yang berisi informasi tentang penjualan berbagai produk di toko kelontong:
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
Kita dapat menggunakan sintaks berikut untuk mengurutkan baris DataFrame berdasarkan string di kolom produk :
#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
Perhatikan bahwa baris sekarang diurutkan dari A hingga Z berdasarkan string di kolom Produk .
Jika Anda ingin mengurutkan dari Z ke A, cukup tambahkan argumen ascending=False :
#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
Perhatikan bahwa baris sekarang diurutkan dari Z ke A berdasarkan string di kolom Produk .
Contoh 2: Urutkan berdasarkan kolom string (bila kolom berisi karakter dan angka)
Misalkan kita memiliki pandas DataFrame berikut yang berisi informasi tentang penjualan berbagai produk di toko kelontong:
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
Perhatikan bahwa string di kolom produk berisi karakter dan angka.
Jika kita mencoba mengurutkan baris DataFrame menggunakan nilai di kolom produk , string tidak akan diurutkan dalam urutan yang benar berdasarkan angka:
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
Sebagai gantinya, kita perlu membuat kolom sementara baru bernama sortir yang hanya berisi angka-angka dari kolom produk, lalu mengurutkan berdasarkan nilai di kolom sortir , lalu menghapus seluruh kolom:
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
Perhatikan bahwa baris sekarang diurutkan berdasarkan string di kolom produk dan nomor diurutkan dalam urutan yang benar.
Catatan : Anda dapat menemukan dokumentasi lengkap fungsi pandas sort_values() di sini .
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di panda:
Pandas: cara mengurutkan berdasarkan tanggal
Pandas: cara mengurutkan kolom berdasarkan nama
Pandas: cara mengurutkan berdasarkan indeks dan kolom