Метод map
Метод map применяется к Index
и позволяет преобразовать каждый элемент индекса
с помощью переданной функции или отображения.
Метод принимает функцию, словарь или Series
в качестве аргумента и возвращает новый Index
с преобразованными значениями.
Синтаксис
index.map(mapper)
Параметр mapper может быть:
- функцией, которая принимает элемент и возвращает новое значение;
- словарём или Series для замены значений по ключам.
Пример с функцией
Применим функцию возведения в квадрат к элементам индекса:
import pandas as pd
ser = pd.Series([10, 20, 30, 40, 50], index=[1, 2, 3, 4, 5])
new_index = ser.index.map(lambda x: x ** 2)
print(new_index)
Результат выполнения кода:
Index([1, 4, 9, 16, 25], dtype='int64')
Пример со словарём
Заменим значения индекса с помощью словаря:
import pandas as pd
ser = pd.Series(['a', 'b', 'c'], index=[1, 2, 3])
mapping = {1: 'one', 2: 'two', 3: 'three'}
new_index = ser.index.map(mapping)
print(new_index)
Результат выполнения кода:
Index(['one', 'two', 'three'], dtype='object')
Пример с заменой на None
Если для ключа нет значения в словаре, результат будет NaN:
import pandas as pd
ser = pd.Series(['a', 'b', 'c', 'd'], index=[1, 2, 3, 4])
mapping = {1: 'one', 2: 'two', 4: 'four'}
new_index = ser.index.map(mapping)
print(new_index)
Результат выполнения кода:
Index(['one', 'two', nan, 'four'], dtype='object')
Пример со строковыми методами
Преобразуем элементы индекса в верхний регистр:
import pandas as pd
ser = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
new_index = ser.index.map(str.upper)
print(new_index)
Результат выполнения кода:
Index(['A', 'B', 'C'], dtype='object')
Пример с несколькими преобразованиями
Применим сложное преобразование с проверкой типа:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5], index=[10, 20, 30, 40, 50])
def transform(x):
if x < 25:
return x * 2
return x // 2
new_index = ser.index.map(transform)
print(new_index)
Результат выполнения кода:
Index([20, 40, 15, 20, 25], dtype='int64')