Ошибка при отображении значений словаря в фрейм данных - PullRequest
1 голос
/ 06 апреля 2019

Я пытаюсь отобразить некоторые значения из словаря в фрейм данных.В кадре данных есть столбец с названием месяц, значения которого находятся в диапазоне от 1 до 12.Мой словарь приравнивает числовое значение месяца к его имени, например, 1: январь ...

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

dataframe

month_dict = {"1" : "January", "2" : "February", "3" : "March", "4" : "April", "5" : "May" , "6" : "June", "7" : "July", "8" : "August", "9" : "September", "10" : "October" ,"11" : "November","12" : "December"}

df['month'] = df['month'].map(month_dict)

Предполагается, что названия месяцев будут заменены числовыми эквивалентами, но будут возвращены только NaN.Может кто-нибудь помочь, пожалуйста?

1 Ответ

1 голос
/ 06 апреля 2019

Вам нужны одинаковые данные в столбце и ключах словаря.


Решение для сопоставления строк:

Приведение столбца к строкам, поскольку строки в ключах в словаре:

month_dict = {"1" : "January", "2" : "February", "3" : "March", "4" : "April", 
              "5" : "May" , "6" : "June", "7" : "July", "8" : "August", 
              "9" : "September", "10" : "October" ,"11" : "November","12" : "December"}

df['month'] = df['month'].astype(str).map(month_dict)

Решение для сопоставления целых чисел:

Преобразование ключей в словаре в целые числа:

month_dict = {int(k):v for k, v in month_dict.items()}
print (month_dict)
{1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 
 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'}

df['month'] = df['month'].map(month_dict)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...