HOWTO · Pandas
Substituir Valores de Coluna em Pandas DataFrame
Este tutorial fornece vários métodos para substituir valores de colunas em DataFrame através da utilização de métodos de mapa, localização, substituição
Nesta página
Neste tutorial, iremos introduzir como substituir os valores das colunas em Pandas DataFrame. Cobriremos três funções diferentes para substituir facilmente os valores das colunas.
Utilize o map() Método para Substituir Valores de Colunas em Pandas
As colunas DataFrame são Pandas Series. Podemos utilizar o método map() para substituir cada valor de uma coluna por outro valor.
Series.map() Sintaxe
Series.map(arg, na_action=None)
- Parâmetros:
arg: este parâmetro é utilizado para mapear umaSeries. Pode ser uma colecção ou uma função.na_action: É utilizado para lidar com valoresNaN(Not a Number). Poderia ter dois valores -Noneouignore. ONoneé o padrão, e omap()aplicará o mapeamento a todos os valores, incluindo os valoresNan; oignoredeixa os valoresNaNcomo estão na coluna sem os passar para o método de mapeamento.
Retorna uma Series com o mesmo índice.
Agora vamos tomar um exemplo para implementar o método map. Vamos utilizar o mesmo DataFrame nos exemplos abaixo.
import pandas as pd
import numpy as np
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])
print(df)
Resultado:
name city
0 michael berlin
1 louis paris
2 jack roma
3 jasmine NaN
Substituir valores de coluna por recolha na DataFrame de Pandas
import pandas as pd
import numpy as np
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])
# replace column values with collection
df["city"] = df["city"].map(
{"berlin": "dubai", "paris": "moscow", "roma": "milan", np.nan: "NY"},
na_action=None,
)
print(df)
Resultado:
name city
0 michael dubai
1 louis moscow
2 jack milan
3 jasmine NY
Os valores originais da coluna DataFrame city são substituídos pelos novos valores do dicionário como o primeiro parâmetro no método map().
Substituir valores da coluna por função na DataFrame Pandas
import pandas as pd
import numpy as np
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])
# replace column values with function
df["city"] = df["city"].map("I am from {}".format)
print(df)
Resultado:
name city
0 michael I am from berlin
1 louis I am from paris
2 jack I am from roma
3 jasmine I am from nan
A na_action é None por defeito, por isso a NaN na coluna original é também substituída pela nova string I am from nan.
Se preferir manter NaN mas não substituir, pode definir a na_action para ser ignore.
import pandas as pd
import numpy as np
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])
# replace column values excluding NaN
df["city"] = df["city"].map("I am from {}".format, na_action="ignore")
print(df)
Resultado:
name city
0 michael I am from berlin
1 louis I am from paris
2 jack I am from roma
3 jasmine NaN
Utilize o método loc para substituir o valor da coluna em Pandas
Outra forma de substituir o valor da coluna Pandas DataFrame é o método loc() do DataFrame. O loc() método de acesso aos valores através das suas etiquetas.
DataFrame.loc[] Sintaxe
pandas.DataFrame.loc[condition, column_label] = new_value
- Parâmetros:
condition: este parâmetro devolve os valores que tornam a condição verdadeiracolumn_label: este parâmetro utilizado para especificar a coluna visada a actualizar
Depois de determinar o valor através dos parâmetros, actualizamo-lo para new_value.
Agora vamos tomar um exemplo para implementar o método loc. Utilizaremos o DataFrame abaixo como exemplo.
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"grades": [30, 70, 40, 80],
"result": ["N/A", "N/A", "N/A", "N/A"],
}
df = pd.DataFrame(data, columns=["name", "grades", "result"])
print(df)
Resultado:
name grades result
0 michael 30 N/A
1 louis 70 N/A
2 jack 40 N/A
3 jasmine 80 N/A
Substituir valores da coluna por condições em Pandas DataFrame
Podemos utilizar condições booleanas para especificar os elementos visados.
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"grades": [30, 70, 40, 80],
"result": ["N/A", "N/A", "N/A", "N/A"],
}
df = pd.DataFrame(data, columns=["name", "grades", "result"])
df.loc[df.grades > 50, "result"] = "success"
df.loc[df.grades < 50, "result"] = "fail"
print(df)
Resultado:
name grades result
0 michael 30 fail
1 louis 70 success
2 jack 40 fail
3 jasmine 80 success
df.loc[df.grades>50, 'result']='success' substitui os valores na coluna grades por success se os valores forem superiores a 50.
df.loc[df.grades<50,'result']='fail' substitui os valores na coluna grades por fail se os valores forem inferiores a 50.
Utilize o replace() Método para Modificar Valores
Outra forma de substituir os valores das colunas em Pandas DataFrame é o método Series.replace().
Series.replace() Sintaxe
- Substituir um único valor
df[column_name].replace([old_value], new_value)
- Substituir vários valores com o mesmo valor
df[column_name].replace([old_value1, old_value2, old_value3], new_value)
- Substituir múltiplos valores por múltiplos valores
df[column_name].replace(
[old_value1, old_value2, old_value3], [new_value1, new_value2, new_value3]
)
- Substituir um valor por um novo valor para todo o DataFrame
df.replace([old_value], new_value)
Utilizaremos o DataFrame abaixo para o resto dos exemplos.
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"salary": [700, 800, 1000, 1200],
}
df = pd.DataFrame(data, columns=["name", "salary"])
print(df)
Resultado:
name salary
0 michael 700
1 louis 800
2 jack 1000
3 jasmine 1200
Substituir valores de coluna por valores múltiplos em DataFrame Pandas
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"salary": [700, 800, 1000, 1200],
}
df = pd.DataFrame(data, columns=["name", "salary"])
df["name"] = df["name"].replace(["michael", "louis"], ["karl", "lionel"])
print(df)
Resultado:
name salary
0 karl 700
1 lionel 800
2 jack 1000
3 jasmine 1200
Substituir valores da coluna apenas pelo mesmo valor em Pandas DataFrame
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"salary": [700, 800, 1000, 1200],
}
df = pd.DataFrame(data, columns=["name", "salary"])
df["salary"] = df["salary"].replace([1000, 1200], 1500)
print(df)
Resultado:
name salary
0 karl 700
1 lionel 800
2 jack 1500
3 jasmine 1500
Substituir o valor da coluna por um valor em Pandas DataFrame
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"salary": [700, 800, 1000, 1200],
}
df = pd.DataFrame(data, columns=["name", "salary"])
df["salary"] = df["salary"].replace([700], 750)
print(df)
Resultado:
name salary
0 karl 750
1 lionel 800
2 jack 1000
3 jasmine 1200
Substituir valores em todo o Quadro de Dados Pandas
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"salary": [700, 800, 1000, 1000],
}
df = pd.DataFrame(data, columns=["name", "salary"])
df = df.replace([1000], 1400)
print(df)
Resultado:
name salary
0 karl 750
1 lionel 800
2 jack 1400
3 jasmine 1400