O método Series.str.replace()
funciona do mesmo modo como o método .replace()
do python, mas também funciona em Series. Antes de chamar .replace()
em uma série do pandas, .str
deve ser prefixado para diferenciá-lo do método de substituição padrão do Python.
Sintaxe: Series.str.replace(pat, repl, n=-1, case=None, regex=True)
Parâmetros:
- pat: string ou regex compilado a ser substituído.
- repl: string ou chamável (função) para substituir em vez de
pat
. - n: Número de substituições a serem feitas em uma única string, o padrão é -1 que significa Tudo.
- case: Obtém valor booleano para decidir a distinção entre maiúsculas e minúsculas. Passar False para não diferenciar maiúsculas de minúsculas.
- regex: Valor booleano, se True assume que o padrão passado é um regex
Tipo de retorno: Series com os valores substituídos.
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 é anexada 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: Substituindo valores na coluna de Age
Neste exemplo, todos os valores na coluna Age
com valor 25.0 são substituídos por "Twenty five"
usando o método str.replace()
. Depois disso, um filtro é criado e passado no método .where()
para exibir apenas as linhas que têm Age = “Twenty five”
.
# importando o pacote pandas import pandas as pd # lendo um arquivo csv diretamente de uma url data = pd.read_csv("https://media.geeksforgeeks.org/wp-content/uploads/nba.csv") # Sobrescrevendo a coluna Age com os valores substituído data["Age"]= data["Age"].replace(25.0, "Twenty five") # Cria um filtro para a coluna Age # com valores iguais a "Twenty five" filter = data["Age"]=="Twenty five" # imprimindo apenas as colunas filtradas print(data.where(filter).dropna())
Conforme mostrado na saída abaixo, todos os valores na coluna Age com Age = 25,0 foram substituídos por "Twenty five".
Saída:
Name Team Number Position Age Height Weight College Salary 0 Avery Bradley Boston Celtics 0.0 PG Twenty five 6-2 180.0 Texas 7730337.0 1 Jae Crowder Boston Celtics 99.0 SF Twenty five 6-6 235.0 Marquette 6796117.0 7 Kelly Olynyk Boston Celtics 41.0 C Twenty five 7-0 238.0 Gonzaga 2165160.0 26 Thomas Robinson Brooklyn Nets 41.0 PF Twenty five 6-10 237.0 Kansas 981348.0 35 Cleanthony Early New York Knicks 11.0 SF Twenty five 6-8 210.0 Wichita State 845059.0 44 Derrick Williams New York Knicks 23.0 PF Twenty five 6-8 240.0 Arizona 4000000.0 47 Isaiah Canaan Philadelphia 76ers 0.0 PG Twenty five 6-0 201.0 Murray State 947276.0 48 Robert Covington Philadelphia 76ers 33.0 SF Twenty five 6-9 215.0 Tennessee State 1000000.0 59 Hollis Thompson Philadelphia 76ers 31.0 SG Twenty five 6-8 206.0 Georgetown 947276.0 71 Terrence Ross Toronto Raptors 31.0 SF Twenty five 6-7 195.0 Washington 3553917.0 79 Ian Clark Golden State Warriors 21.0 SG Twenty five 6-3 175.0 Belmont 947276.0 105 C.J. Wilcox Los Angeles Clippers 30.0 SG Twenty five 6-5 195.0 Washington 1159680.0 113 Ryan Kelly Los Angeles Lakers 4.0 PF Twenty five 6-11 230.0 Duke 1724250.0 126 John Jenkins Phoenix Suns 23.0 SG Twenty five 6-4 215.0 Vanderbilt 981348.0 130 Phil Pressey Phoenix Suns 25.0 PG Twenty five 5-11 175.0 Missouri 55722.0 136 Quincy Acy Sacramento Kings 13.0 SF Twenty five 6-7 240.0 Baylor 981348.0 143 DeMarcus Cousins Sacramento Kings 15.0 C Twenty five 6-11 270.0 Kentucky 15851950.0 144 Seth Curry Sacramento Kings 30.0 SG Twenty five 6-2 185.0 Duke 947276.0 151 Cameron Bairstow Chicago Bulls 41.0 PF Twenty five 6-9 250.0 New Mexico 845059.0 166 Matthew Dellavedova Cleveland Cavaliers 8.0 PG Twenty five 6-4 198.0 Saint Mary's 1147276.0 175 Jordan McRae Cleveland Cavaliers 12.0 SG Twenty five 6-5 179.0 Tennessee 111196.0 177 Iman Shumpert Cleveland Cavaliers 4.0 SG Twenty five 6-5 220.0 Georgia Tech 8988765.0 179 Tristan Thompson Cleveland Cavaliers 13.0 C Twenty five 6-9 238.0 Texas 14260870.0 184 Lorenzo Brown Detroit Pistons 17.0 PG Twenty five 6-5 189.0 North Carolina State 111444.0 185 Reggie Bullock Detroit Pistons 25.0 SF Twenty five 6-7 205.0 North Carolina 1252440.0 202 Solomon Hill Indiana Pacers 44.0 SF Twenty five 6-7 225.0 Arizona 1358880.0 209 Shayne Whittington Indiana Pacers 42.0 PF Twenty five 6-11 250.0 Western Michigan 845059.0 214 Jared Cunningham Milwaukee Bucks 9.0 SG Twenty five 6-4 195.0 Oregon State 947276.0 216 John Henson Milwaukee Bucks 31.0 PF Twenty five 6-11 229.0 North Carolina 2943221.0 266 JaMychal Green Memphis Grizzlies 0.0 PF Twenty five 6-9 227.0 Alabama 845059.0 272 Lance Stephenson Memphis Grizzlies 1.0 SF Twenty five 6-5 230.0 Cincinnati 9000000.0 284 James Ennis New Orleans Pelicans 4.0 SF Twenty five 6-7 210.0 Long Beach State 845059.0 286 Tim Frazier New Orleans Pelicans 2.0 PG Twenty five 6-1 170.0 Penn State 845059.0 289 Jordan Hamilton New Orleans Pelicans 25.0 SG Twenty five 6-7 220.0 Texas 1015421.0 290 Jrue Holiday New Orleans Pelicans 11.0 PG Twenty five 6-4 205.0 UCLA 10595507.0 366 Nikola Vucevic Orlando Magic 9.0 C Twenty five 7-0 260.0 USC 11250000.0 382 John Wall Washington Wizards 2.0 PG Twenty five 6-4 195.0 Kentucky 15851950.0 385 Will Barton Denver Nuggets 5.0 SF Twenty five 6-6 175.0 Memphis 3533333.0 404 Adreian Payne Minnesota Timberwolves 33.0 PF Twenty five 6-10 237.0 Michigan State 1938840.0 428 Al-Farouq Aminu Portland Trail Blazers 8.0 SF Twenty five 6-9 215.0 Wake Forest 8042895.0 436 Damian Lillard Portland Trail Blazers 0.0 PG Twenty five 6-3 195.0 Weber State 4236287.0
Exemplo #2: insensibilidade a maiúsculas e minúsculas
Neste exemplo, o nome do time Boston Celtics é substituído por New Boston Celtics. Nos parâmetros, em vez de passar Boston, boston é passado (com 'b' em minúsculas) e o caso é definido como False, o que significa que não diferencia maiúsculas de minúsculas. Depois disso, apenas as equipes com nome de equipe New Boston Celtics
são exibidas usando o método .where()
.
# importando o pacote pandas import pandas as pd # lendo um arquivo csv diretamente de uma url data = pd.read_csv("https://media.geeksforgeeks.org/wp-content/uploads/nba.csv") # Sobrescrevendo a coluna Age com os valores substituído data["Team"]= data["Team"].str.replace("boston", "New Boston", case = False) # Cria um filtro para a coluna Team # com valores iguais a "New Boston Celtics" filter = data["Team"] == "New Boston Celtics" # imprimindo apenas as colunas filtradas print(data.where(filter).dropna())
Conforme mostrado na saída abaixo, Boston é substituído por New Boston, independentemente das minúsculas transmitidas nos parâmetros. Isso ocorre porque o parâmetro case
foi definido como False
.
Saída:
Name Team Number Position Age Height Weight College Salary 0 Avery Bradley New Boston Celtics 0.0 PG 25.0 6-2 180.0 Texas 7730337.0 1 Jae Crowder New Boston Celtics 99.0 SF 25.0 6-6 235.0 Marquette 6796117.0 3 R.J. Hunter New Boston Celtics 28.0 SG 22.0 6-5 185.0 Georgia State 1148640.0 6 Jordan Mickey New Boston Celtics 55.0 PF 21.0 6-8 235.0 LSU 1170960.0 7 Kelly Olynyk New Boston Celtics 41.0 C 25.0 7-0 238.0 Gonzaga 2165160.0 8 Terry Rozier New Boston Celtics 12.0 PG 22.0 6-2 190.0 Louisville 1824360.0 9 Marcus Smart New Boston Celtics 36.0 PG 22.0 6-4 220.0 Oklahoma State 3431040.0 10 Jared Sullinger New Boston Celtics 7.0 C 24.0 6-9 260.0 Ohio State 2569260.0 11 Isaiah Thomas New Boston Celtics 4.0 PG 27.0 5-9 185.0 Washington 6912869.0 12 Evan Turner New Boston Celtics 11.0 SG 27.0 6-7 220.0 Ohio State 3425510.0 13 James Young New Boston Celtics 13.0 SG 20.0 6-6 215.0 Kentucky 1749840.0 14 Tyler Zeller New Boston Celtics 44.0 C 26.0 7-0 253.0 North Carolina 2616975.0
Artigo escrito por Kartikaybhutani e traduzido por Acervolima de Python | Pandas Series.str.replace() to replace text in a series.
0 comentários:
Postar um comentário