Substituir Valores de Coluna em Pandas DataFrame

  1. Utilize o map() Método para Substituir Valores de Colunas em Pandas
  2. Utilize o método loc para substituir o valor da coluna em Pandas
  3. Substituir valores da coluna por condições em Pandas DataFrame
  4. 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:
  1. arg: este parâmetro é utilizado para mapear uma Series. Pode ser uma colecção ou uma função.
  2. na_action: É utilizado para lidar com valores NaN (Not a Number). Poderia ter dois valores - None ou ignore. O None é o padrão, e o map() aplicará o mapeamento a todos os valores, incluindo os valores Nan; o ignore deixa os valores NaN 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:
  1. condition: este parâmetro devolve os valores que tornam a condição verdadeira
  2. column_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

  • Definir Colunas como Índice em Pandas Dataframe
  • Como Iterar Através de Linhas de um DataFrame em Pandas