Ну что, опять рабочий пример. Не сложный - все таки пятница! Недавно нужно было привести разные payment_system к человекочитаемым типам оплаты — карты РФ, карты не РФ, кредиты, оплата частями и т.д. Задача вроде простая — но очень частая: 🧹 "почистить" и структурировать данные.
💡 Решение через .map()
Выглядело это примерно так:
data = {'payment_system': ['sberbank', 'tinkoff', 'stripe', 'tinkoffcredit', 'alpha_bank_podeli'],
'amount': [1000, 2000, 1500, 3000, 2500]}
df = pd.DataFrame(data)
map_dict = {
'sberbank': 'Оплата картами РФ',
'tinkoff': 'Оплата картами РФ',
'stripe': 'Оплата картами не РФ',
'tinkoffcredit': 'Т-Банк кредит',
'alpha_bank_podeli': 'Подели (Альфа-Банк)'
}
df['payment_type'] = df['payment_system'].map(map_dict)
✅ Я сделала категоризацию платежных систем! Круто звучит, правда? А если просто - то, применила словарь к данным в столбце. В вашем случае он заменяет названия платежных систем на их категории. Преобразование занимает одну строку — читаемо, быстро и лаконично.
🔍 Что такое .map() вообще?
.map() — метод в pandas, который применяется к Series (одному столбцу) и возвращает новую Series.
Он может принимать:
➖словарь — для замены значений (value: new_value) как мы и сделали
➖функцию — для произвольной логики
⚠️ Нюансы использования:
- Работает только с одной колонкой
- Для нескольких — нужно использовать apply().
Решение через .apply()
def get_payment_type(ps):
if ps in ['sberbank', 'tinkoff']:
return 'Оплата картами РФ'
elif ps == 'stripe':
return 'Оплата картами не РФ'
elif ps == 'tinkoffcredit':
return 'Т-Банк кредит'
elif ps == 'alpha_bank_podeli':
return 'Подели (Альфа-Банк)'
return 'Другое'
df['payment_type'] = df['payment_system'].apply(get_payment_type)
☝️Вывод:
Если нужно быстро заменить или классифицировать значения в одном столбце — .map() 🔥
Особенно удобно с категорией платежей, типов устройств, источников трафика и т.п.
Теперь это один из моих go-to инструментов 💼
