Pandas: как сортировать dataframe на основе строкового столбца


Вы можете использовать следующие методы для сортировки строк DataFrame pandas на основе значений определенного строкового столбца:

Способ 1: сортировка по строковому столбцу (когда столбец содержит только символы)

 df = df. sort_values (' my_string_column ')

Способ 2: сортировка по строковому столбцу (если столбец содержит символы и цифры)

 #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 ')

Следующие примеры показывают, как использовать каждый метод на практике.

Пример 1. Сортировка по строковому столбцу (когда столбец содержит только символы)

Предположим, у нас есть следующий DataFrame pandas, содержащий информацию о продажах различных продуктов в продуктовом магазине:

 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 на основе строк в столбце продукта :

 #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

Обратите внимание, что строки теперь отсортированы от А до Я на основе строк в столбце «Продукт» .

Если вместо этого вы хотите сортировать от Z до A, просто добавьте аргумент возрастающий=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

Обратите внимание, что строки теперь отсортированы от Z до A на основе строк в столбце «Продукт» .

Пример 2. Сортировка по строковому столбцу (когда столбец содержит символы и цифры)

Предположим, у нас есть следующий DataFrame pandas, содержащий информацию о продажах различных продуктов в продуктовом магазине:

 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

Обратите внимание, что строки в столбце продукта содержат как символы, так и цифры.

Если мы попытаемся отсортировать строки DataFrame, используя значения в столбце продукта , строки не будут отсортированы в правильном порядке на основе чисел:

 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

Вместо этого нам нужно создать новый временный столбец под названием sort , содержащий только числа из столбца продукта, затем выполнить сортировку по значениям в столбце сортировки , а затем полностью удалить столбец:

 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

Обратите внимание, что строки в столбце продукта теперь отсортированы по строкам, а числа отсортированы в правильном порядке.

Примечание . Полную документацию по функции pandas sort_values() можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в pandas:

Панды: как сортировать по дате
Pandas: как сортировать столбцы по имени
Pandas: как сортировать по индексу и столбцу

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *