Reemplazar los valores de la columna en Pandas DataFrame

Mohamed Ayman 10 octubre 2023
  1. Usar el método map() para reemplazar los valores de las columnas en Pandas
  2. Usa el método loc para reemplazar el valor de la columna en Pandas
  3. Reemplazar los valores de la columna con condiciones en Pandas DataFrame
  4. Utiliza el método replace() para modificar los valores
Reemplazar los valores de la columna en Pandas DataFrame

En este tutorial, introduciremos cómo reemplazar los valores de las columnas en Pandas DataFrame. Cubriremos tres funciones diferentes para reemplazar fácilmente los valores de las columnas.

Usar el método map() para reemplazar los valores de las columnas en Pandas

Las columnas del DataFrame son la Series de Pandas. Podemos usar el método map para reemplazar cada valor de una columna con otro valor.

Series.map() Sintaxis

Series.map(arg, na_action=None)
  • Parámetros:
  1. arg: este parámetro se usa para mapear una Series. Podría ser una colección o una función.
  2. na_action: Se usa para tratar con valores NaN (Not a Number). Podría tomar dos valores - None o ignore. Ninguno es el predeterminado, y map() aplicará el mapeo a todos los valores, incluyendo los valores Nan; ignore deja los valores NaN como están en la columna sin pasarlos al método de mapeo.

Devuelve una Series con el mismo índice.

Ahora tomemos un ejemplo para implementar el método del map. Usaremos el mismo DataFrame en los siguientes ejemplos.

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

Reemplazar los valores de la columna con la colección en Pandas DataFrame

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

Los valores originales de la columna city del DataFrame son reemplazados por los nuevos valores del diccionario como primer parámetro del método map().

Reemplazar los valores de la columna con la función en Pandas DataFrame

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

La na_action es None por defecto, por lo que la NaN de la columna original también se sustituye por la nueva cadena I am from nan.

Si prefieres mantener NaN pero no ser reemplazado, puedes establecer la na_action como 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

Usa el método loc para reemplazar el valor de la columna en Pandas

Otra forma de reemplazar el valor de la columna del Pandas DataFrame es el método loc() del DataFrame. El método loc() accede a los valores a través de sus etiquetas.

DataFrame.loc[] Sintaxis

pandas.DataFrame.loc[condition, column_label] = new_value
  • Parámetros:
  1. condition: este parámetro devuelve los valores que hacen que la condición sea verdadera
  2. column_label: este parámetro se utiliza para especificar la columna objetivo a actualizar

Después de determinar el valor a través de los parámetros, lo actualizamos a new_value.

Ahora tomemos un ejemplo para implementar el método loc. Usaremos el siguiente DataFrame como ejemplo.

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

Reemplazar los valores de la columna con condiciones en Pandas DataFrame

Podemos usar condiciones booleanas para especificar los elementos objetivo.

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' sustituye los valores de la columna grade por success si los valores son mayores de 50.

df.loc[df.grades<50,'result']='fail' sustituye los valores de la columna grade por fail si los valores son menores de 50.

Utiliza el método replace() para modificar los valores

Otra forma de reemplazar los valores de las columnas en Pandas DataFrame es el método Series.replace().

Series.replace() Sintaxis

  • Reemplazar un solo valor
df[column_name].replace([old_value], new_value)
  • Reemplazar múltiples valores con el mismo valor
df[column_name].replace([old_value1, old_value2, old_value3], new_value)
  • Reemplazar los valores múltiples con valores múltiples
df[column_name].replace(
    [old_value1, old_value2, old_value3], [new_value1, new_value2, new_value3]
)
  • Sustituir un valor por un nuevo valor para todo el DataFrame
df.replace([old_value], new_value)

Usaremos el siguiente DataFrame para el resto de los ejemplos.

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

Reemplazar los valores de la columna con valores múltiples en 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["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

Reemplazar los valores de la columna con sólo el mismo valor en 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

Sustituir el valor de la columna por un valor en 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

Reemplazar valores en todo Pandas DataFrame

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

Artículo relacionado - Pandas DataFrame