Python Series map

Suraj Joshi 25 febrero 2021
Python Series map

Este tutorial explica cómo podemos reemplazar valores de una Serie Pandas con otro valor usando el método Series.map().

import pandas as pd

my_series = pd.Series([85, 87, 90, 89], index=["1", "2", "3", "4"])

print(my_series, "\n")

Producción :

1    85
2    87
3    90
4    89
dtype: int64

Utilizaremos la Serie my_series mostrada en el ejemplo anterior para explicar el funcionamiento del método map() en Pandas.

pandas.Series.map()

Sintaxis

Series.map(arg, na_action=None)

Devuelve un objeto Series sustituyendo los valores del objeto Series de la llamada en función del parámetro arg. El arg puede ser una función, diccionario u objeto Series que determina cuáles son los nuevos valores del objeto Series.

El parámetro na_action puede tomar como valor None o 'ignore'. El valor 'ignore' de na_action indica que se ignoran los valores NaN de la Series y no se hace nada con ellos.

Ejemplo: Usar el método map() para una serie de Pandas

import pandas as pd

my_series = pd.Series([85, 87, 90, 89], index=["1", "2", "3", "4"])

altered_series = my_series.map({85: 80, 87: 80, 90: 90, 89: 80})

print("Initial Series:")
print(my_series, "\n")

print("Altered Series:")
print(altered_series, "\n")

Producción :

Initial Series:
1    85
2    87
3    90
4    89
dtype: int64

Altered Series:
1    80
2    80
3    90
4    80
dtype: int64

Sustituye los elementos de my_series en función de los valores especificados en el diccionario pasado como argumento al método map().

También podemos usar funciones para cambiar los valores de las series de Pandas usando el método map().

import pandas as pd

my_series = pd.Series([85, 87, 90, 89], index=["1", "2", "3", "4"])

altered_series = my_series.map(lambda x: str(x) + ".00")

print("Initial Series:")
print(my_series, "\n")

print("Altered Series:")
print(altered_series, "\n")

Producción :

Initial Series:
1    85
2    87
3    90
4    89
dtype: int64

Altered Series:
1    85.00
2    87.00
3    90.00
4    89.00
dtype: object

Toma cada elemento de my_series y añade .00 al final de cada elemento de my_series.

Ejemplo: Usar el método map() para alterar una columna particular de un DataFrame

import pandas as pd

df_1 = pd.DataFrame(
    {
        "Column 1": [85, 87, 90, 89],
        "Column 2": [55, 54, 56, 66],
        "Column 3": [23, 95, 65, 45],
    },
    index=["1", "2", "3", "4"],
)

print("Initial DataFrame:")
print(df_1, "\n")

df_1["Column 1"] = df_1["Column 1"].map(lambda x: x * 10)

print("DataFrame after changing Column 1:")
print(df_1)

Resultado:

Initial DataFrame:
   Column 1  Column 2  Column 3
1        85        55        23
2        87        54        95
3        90        56        65
4        89        66        45

DataFrame after changing Column 1:
   Column 1  Column 2  Column 3
1       850        55        23
2       870        54        95
3       900        56        65
4       890        66        45

Se aplicará la función lambda sólo a la Columna 1 del DataFrame utilizando el método map(). Como una sola columna es un objeto Series, podemos utilizar el método map() con una columna del DataFrame. Entonces asignamos el objeto Series devuelto por el método map() a la Columna 1 del DataFrame df_1. De esta manera, podemos cambiar los valores de la columna particular sólo de un DataFrame.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Pandas Series