обработка данных
May 19, 2023

Простые способы maping-а значений с Pandas

Жизнь любого человека — зеркальное отражение его представлений о ней (Макс Фрай). Очень распространенной табличной операцией является отображение значений колонки по некоторому словарю. Рассмотрим основные способы и их специфику.

В демонстрационных целях создадим серию и словарь:

import pandas as pd

ser = pd.Series(['key_old3', 'key_old5', 'key_old1', 'key_old3', 'key_old2',
                 'key_old4' ,'key_old3'])

spr_d = {'key_old1': 'key_new1', 'key_old2': 'key_new2', 'key_old3': 'key_new3',
         'key_old4': 'key_new4'}

Map

Методу map можно напрямую передать словарь и добиться цели:

ser.map(spr_d)

Как можно заметить, значения, ключи к которым в словаре не найдутся, будут заполнены пропусками. Для их сохранения можно чуть видоизменить вызов (воспользоваться методом get словаря для задания действия по умолчанию - возвращать само значение):

ser.map(lambda x: spr_d.get(x, x))

Альтернативно можно вернуть предопределенное значение:

ser.map(lambda x: spr_d.get(x, 'old')) 

Replace

Аналогичные действия можно провести с методом replace:

ser.replace(spr_d)

Он оставляет старые ключи. Опять же, когда незамененные значения следует как-то помечать, воспользуйтесь методом map с оставлением пропусков либо заполнением предопределенным значением