Ele funciona de forma semelhante ao método split()
padrão do Python, mas esse método só pode ser aplicado a uma string individual. Já o método Series.str.split()
do pandas pode ser aplicado a uma série inteira. .str
deve ser prefixado todas as vezes antes de chamar este método para diferenciá-lo da função padrão do Python, caso contrário, ele gerará um erro.
Sintaxe: Series.str.split(pat=None, n=-1, expand=False)
Parâmetros:
- pat: Valor da string, separador ou delimitador para separar a string em.
- n: Números de separações máximas a serem feitas em uma única string, o padrão é -1, o que significa todas.
- expand: Valor booleano, retorna um dataframe com valor diferente em colunas diferentes se True. Caso contrário, ele retorna uma série com uma lista de strings.
Tipo de retorno: Série de lista ou Dataframe dependendo do parâmetro expand:
Para baixar o CSV usado no código, clique aqui.
Nos exemplos a seguir, o DataFrame usado contém dados de alguns jogadores da NBA. O DataFrame antes de qualquer operação é mostrado abaixo.
Name Team Number Position Age Height Weight College Salary 0 Avery Bradley Boston Celtics 0.0 PG 25.0 6-2 180.0 Texas 7730337.0 1 Jae Crowder Boston Celtics 99.0 SF 25.0 6-6 235.0 Marquette 6796117.0 2 John Holland Boston Celtics 30.0 SG 27.0 6-5 205.0 Boston University NaN 3 R.J. Hunter Boston Celtics 28.0 SG 22.0 6-5 185.0 Georgia State 1148640.0 4 Jonas Jerebko Boston Celtics 8.0 PF 29.0 6-10 231.0 NaN 5000000.0 .. ... ... ... ... ... ... ... ... ... 453 Shelvin Mack Utah Jazz 8.0 PG 26.0 6-3 203.0 Butler 2433333.0 454 Raul Neto Utah Jazz 25.0 PG 24.0 6-1 179.0 NaN 900000.0 455 Tibor Pleiss Utah Jazz 21.0 C 26.0 7-3 256.0 NaN 2900000.0 456 Jeff Withey Utah Jazz 24.0 C 26.0 7-0 231.0 Kansas 947276.0 457 NaN NaN NaN NaN NaN NaN NaN NaN NaN [458 rows x 9 columns]
Exemplo #1: Dividindo string em lista
Nestes dados, a função split()
é usada para dividir a coluna Team
a cada “t”. O parâmetro é definido como 1 e, portanto, o número máximo de separações em uma única string será 1. O parâmetro de expand
é False e é por isso que uma série com Lista de strings é retornada em vez de um DataFrame.
# Importa o pacote pandas import pandas as pd # Lendo um arquivo csv de uma url data = pd.read_csv("https://media.geeksforgeeks.org/wp-content/uploads/nba.csv") # descartando colunas de valor nulo para evitar erros data.dropna(inplace = True) # novo dataframe com colunas de valor dividido data["Team"] = data["Team"].str.split("t", n=1, expand=True) print(data)
Conforme mostrado na saída abaixo, a coluna Team
agora contém uma lista. A string foi separada na primeira ocorrência de “t” e não na ocorrência posterior, pois o parâmetro n
foi definido como 1 (Max 1 separação em uma string).
Saída:
Name Team Number Position Age Height Weight College Salary 0 Avery Bradley Bos 0.0 PG 25.0 6-2 180.0 Texas 7730337.0 1 Jae Crowder Bos 99.0 SF 25.0 6-6 235.0 Marquette 6796117.0 3 R.J. Hunter Bos 28.0 SG 22.0 6-5 185.0 Georgia State 1148640.0 6 Jordan Mickey Bos 55.0 PF 21.0 6-8 235.0 LSU 1170960.0 7 Kelly Olynyk Bos 41.0 C 25.0 7-0 238.0 Gonzaga 2165160.0 .. ... ... ... ... ... ... ... ... ... 449 Rodney Hood U 5.0 SG 23.0 6-8 206.0 Duke 1348440.0 451 Chris Johnson U 23.0 SF 26.0 6-6 206.0 Dayton 981348.0 452 Trey Lyles U 41.0 PF 20.0 6-10 234.0 Kentucky 2239800.0 453 Shelvin Mack U 8.0 PG 26.0 6-3 203.0 Butler 2433333.0 456 Jeff Withey U 24.0 C 26.0 7-0 231.0 Kansas 947276.0 [364 rows x 9 columns]
Exemplo #2: Fazendo colunas separadas de string
Neste exemplo, a coluna Name
é separada por espaço (" ") e o parâmetro expand
é definido como True, o que significa que ele retornará um DataFrame com todas as strings separadas em colunas diferentes. O DataFrame é então usado para criar novas colunas e a coluna antiga Name
é descartada usando o método .drop()
.
# Importa o pacote pandas import pandas as pd # Lendo um arquivo csv de uma url data = pd.read_csv("https://media.geeksforgeeks.org/wp-content/uploads/nba.csv") # descartando colunas de valor nulo para evitar erros data.dropna(inplace = True) # novo dataframe com colunas de valor dividido new = data["Name"].str.split(" ", n=1, expand=True) # separar a coluna de nome do novo dataframe data["First Name"] = new[0] # separar a coluna de sobrenome do novo dataframe data["Last Name"] = new[1] # Eliminando a coluna Name antiga data.drop(columns=["Name"], inplace=True) print(data)
Conforme mostrado na saída abaixo, um novo dataframe foi retornado pela função split()
e foi usado para criar duas novas colunas (Name e Last Name) no dataframe.
Novo DataFrame:
0 1 0 Avery Bradley 1 Jae Crowder 3 R.J. Hunter 6 Jordan Mickey 7 Kelly Olynyk .. ... ... 449 Rodney Hood 451 Chris Johnson 452 Trey Lyles 453 Shelvin Mack 456 Jeff Withey [364 rows x 2 columns]
DataFrame com colunas adicionadas:
Team Number Position Age Height Weight College Salary First Name Last Name 0 Boston Celtics 0.0 PG 25.0 6-2 180.0 Texas 7730337.0 Avery Bradley 1 Boston Celtics 99.0 SF 25.0 6-6 235.0 Marquette 6796117.0 Jae Crowder 3 Boston Celtics 28.0 SG 22.0 6-5 185.0 Georgia State 1148640.0 R.J. Hunter 6 Boston Celtics 55.0 PF 21.0 6-8 235.0 LSU 1170960.0 Jordan Mickey 7 Boston Celtics 41.0 C 25.0 7-0 238.0 Gonzaga 2165160.0 Kelly Olynyk .. ... ... ... ... ... ... ... ... ... ... 449 Utah Jazz 5.0 SG 23.0 6-8 206.0 Duke 1348440.0 Rodney Hood 451 Utah Jazz 23.0 SF 26.0 6-6 206.0 Dayton 981348.0 Chris Johnson 452 Utah Jazz 41.0 PF 20.0 6-10 234.0 Kentucky 2239800.0 Trey Lyles 453 Utah Jazz 8.0 PG 26.0 6-3 203.0 Butler 2433333.0 Shelvin Mack 456 Utah Jazz 24.0 C 26.0 7-0 231.0 Kansas 947276.0 Jeff Withey [364 rows x 10 columns]
Artigo escrito por Kartikaybhutani e traduzido por Acervolima de Python | Pandas Split strings into two List/Columns using str.split().
Muito obrigado por compartilhar. Estava com esse problema agora e me ajudou muito. Obrigado!
ResponderExcluirMuito obrigado por compartilhar. Estava com essa duvida e me ajudou muito.
ResponderExcluir