- Exemplo 1: Ordenar por coluna de cadeia de caracteres (quando a coluna só contém caracteres)
- Exemplo 2: Ordenar por coluna de cadeia de caracteres (quando a coluna contém caracteres e dígitos)
Pode utilizar os seguintes métodos para ordenar as linhas de uma DataFrame do pandas com base nos valores de uma determinada coluna de cadeia de caracteres:
Método 1: Ordenar por coluna de cadeia de caracteres (quando a coluna só contém caracteres)
df = df. sort_values (' my_string_column ')
Método 2: Ordenar por coluna de cadeia de caracteres (quando a coluna contém caracteres e dígitos)
#criar a coluna "sort" que contém os dígitos da coluna "my_string_column" df[' sort '] = df[' my_string_column ']. str . extract (' (\d+) ', expand= False ). astype (int) #ordenar as linhas com base nos dígitos da coluna "sort" df = df. sort_values (' sort ')
Os exemplos seguintes mostram como utilizar cada método na prática.
Exemplo 1: Ordenar por coluna de cadeia de caracteres (quando a coluna só contém caracteres)
Suponhamos que temos o seguinte DataFrame do pandas que contém informações sobre as vendas de vários produtos numa mercearia:
import pandas as pd #create DataFrame 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
Podemos utilizar a seguinte sintaxe para ordenar as linhas do DataFrame com base nas cadeias de caracteres no campo produto coluna:
#ordenar as linhas de A a Z com base na cadeia de caracteres da coluna 'produto' df = df. sort_values (' produto ') #ver DataFrame atualizado print (df) vendas do produto 0 Maçãs 18 2 Bananas 19 4 Feijões 29 3 Alface 14 1 Laranjas 22
Repare que as linhas estão agora ordenadas de A a Z com base nas cadeias de caracteres no produto coluna.
Se, em vez disso, quiser ordenar de Z para A, basta adicionar o argumento ascendente=Falso :
#ordenar as linhas de Z a A com base na cadeia de caracteres da coluna "produto" df = df. sort_values (' produto ', ascending= False ) #ver o DataFrame atualizado print (df) vendas do produto 1 Laranjas 22 3 Alface 14 4 Feijões 29 2 Bananas 19 0 Maçãs 18
Repare que as linhas estão agora ordenadas de Z para A com base nas cadeias de caracteres no produto coluna.
Exemplo 2: Ordenar por coluna de cadeia de caracteres (quando a coluna contém caracteres e dígitos)
Suponhamos que temos o seguinte DataFrame do pandas que contém informações sobre as vendas de vários produtos numa mercearia:
import pandas as pd #create DataFrame 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
Repare que as cadeias de caracteres no produto contém tanto caracteres como dígitos.
Se tentarmos ordenar as linhas do DataFrame usando os valores no produto as cadeias de caracteres não serão ordenadas corretamente com base nos dígitos:
import pandas as pd #ordenar linhas com base em cadeias de caracteres na coluna 'produto' df = df. sort_values (' produto ') #ver DataFrame atualizado print (df) produto vendas 7 A13 28 4 A2 14 2 A22 19 0 A3 18 1 A5 22 3 A50 14 5 A7 11 6 A9 20
Em vez disso, temos de criar uma nova coluna temporária chamada ordenar que contém apenas os dígitos da coluna do produto e, em seguida, ordenar pelos valores na coluna ordenar e, em seguida, eliminar totalmente a coluna:
import pandas as pd #criar uma nova coluna 'sort' que contém os dígitos da coluna 'product' df[' sort '] = df[' product ']. str . extract (' (\d+) ', expand= False ). astype (int) #ordenar as linhas com base nos dígitos da coluna 'sort' 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 7A13 28 2 A22 19 3 A50 14
Repare que as linhas estão agora ordenadas pelas cadeias de caracteres no produto e os dígitos são ordenados pela ordem correcta.
Nota : Pode encontrar a documentação completa para a aplicação pandas ordenar_valores() função aqui.