Я пытаюсь преобразовать столбец фрейма данных Pandas в значения int, используя такое сопоставление (при условии, что данный фрейм данных: my_dataframe и столбец: target_column):
targets = my_dataframe[target_column].unique()
map_to_int = {name: n for n, name in enumerate(targets)}
Использование Python 3.6 с пандами Интересно, почему
A)
my_dataframe['Integer-Column'] = map_to_int[my_dataframe[target_column]]
вызывает
TypeError: объекты 'Series' являются изменяемыми, поэтому их нельзя хэшировать
в то время как
В)
my_dataframe['Integer-Column'] = my_dataframe[target_column].replace(map_to_int)
отлично работает.
Я хотел бы понять, почему это происходит. Есть ли какая-то магия в замене, что TypeError не выдается или я что-то упустил? Я уже получил тот факт, что ключи не могут быть изменены. Но все же мне трудно понять это по-настоящему, так как:
words = my_dataframe[target_column].unique()
# words = ['car' 'bike' 'plain']
foo = 'car'
map_to_int[foo] = 0
foo = 'bike'
map_to_int["bike"] = 1
Буду признателен за любую попытку помочь мне понять, почему B) работает без проблем с A).