Reemplazar los valores de la columna en Pandas DataFrame
-
Usar el método
map()
para reemplazar los valores de las columnas en Pandas -
Usa el método
loc
para reemplazar el valor de la columna en Pandas - Reemplazar los valores de la columna con condiciones en Pandas DataFrame
-
Utiliza el método
replace()
para modificar los valores
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:
arg
: este parámetro se usa para mapear unaSeries
. Podría ser una colección o una función.na_action
: Se usa para tratar con valoresNaN
(Not a Number). Podría tomar dos valores -None
oignore
. Ninguno es el predeterminado, ymap()
aplicará el mapeo a todos los valores, incluyendo los valoresNan
;ignore
deja los valoresNaN
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:
condition
: este parámetro devuelve los valores que hacen que la condición sea verdaderacolumn_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
- Cómo obtener las cabeceras de columna de Pandas DataFrame como una lista
- Cómo borrar la columna de Pandas DataFrame
- Cómo convertir la columna del DataFrame a Datetime en Pandas
- Cómo convertir un float en un entero en Pandas DataFrame
- Cómo clasificar Pandas DataFrame por los valores de una columna
- Cómo obtener el agregado de Pandas grupo por y suma