Substituir Valores de Coluna em Pandas DataFrame
-
Utilize o
map()Método para Substituir Valores de Colunas em Pandas -
Utilize o método
locpara 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 -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
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