#python #pandas #dataframe #mapping
#python #pandas #фрейм данных #отображение
Вопрос:
Я пытаюсь преобразовать все мои значения для определенного столбца из числовых в категориальные.
В настоящее время мой столбец содержит 2 значения, 0 и 1, и я хотел бы изменить его так, чтобы 0 стало строковым значением ‘TypeA’, а 1 стало строковым значением ‘TypeB’
Я пытался сопоставить мои столбцы таким образом, но это не сработало:
test['target'] = test['target'].map(str)
type_mapping2 = {0 : 'TypeA', 1 : 'TypeB'}
test = test.applymap(lambda s: type_mapping2.get(s) if s in type_mapping else s)
test.head()
Целевой столбец по-прежнему выглядит следующим образом:
test['target'].describe
<bound method NDFrame.describe of 0 1
1 1
2 1
3 1
4 0
5 1
Когда я хотел бы выглядеть так:
<bound method NDFrame.describe of 0 1
1 TypeB
2 TypeB
3 TypeB
4 TypeA
5 TypeB
Ответ №1:
Использование Series.map
:
Рассмотрим df
:
In [532]: df
Out[532]:
col
0 1
1 1
2 1
3 0
4 1
In [533]: type_mapping2 = {0 : 'TypeA', 1 : 'TypeB'}
In [535]: df['col'] = df['col'].map(type_mapping2)
In [536]: df
Out[536]:
col
0 TypeB
1 TypeB
2 TypeB
3 TypeA
4 TypeB
Комментарии:
1. @PatrickWhelan Пожалуйста, дайте мне знать, сработал ли ответ?
Ответ №2:
Если вы хотите увидеть карту в новом столбце, вот еще один способ попробовать —
>>> df
col
0 1
1 1
2 1
3 0
4 1
>>> type_map = {0: 'TypeA', 1: 'TypeB'}
>>> df['type_map'] = df['col'].map(type_map) # new col to be named 'type_map'
>>> df
col type_map
0 1 TypeB
1 1 TypeB
2 1 TypeB
3 0 TypeA
4 1 TypeB