Substituir Valores de Coluna em Pandas DataFrame
-
Utilize o
map()
Método para Substituir Valores de Colunas em Pandas -
Utilize o método
loc
para substituir o valor da coluna em Pandas - Substituir valores da coluna por condições em Pandas DataFrame
-
Utilize o
replace()
Método para Modificar Valores
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 -None
ouignore
. ONone
é o padrão, e omap()
aplicará o mapeamento a todos os valores, incluindo os valoresNan
; oignore
deixa os valoresNaN
como 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
Artigo relacionado - Pandas DataFrame
- Como obter os cabeçalhos da coluna Pandas DataFrame como uma lista
- Como eliminar a coluna Pandas DataFrame
- Como Converter a Coluna DataFrame para DataTempo em Pandas
- Como Converter um Flutuador em um Inteiro em Pandas DataFrame
- Como Classificar Pandas DataFrame pelos Valores de uma Coluna
- Como Obter o Agregado de Pandas Group-By e Sum