pd.to_numeric() возвращает ошибку типа: объекты ‘Series’ изменяемы, поэтому их нельзя хэшировать

#python #pandas

#питон #панды

Вопрос:

В данном фрейме данных я создаю новый столбец на основе значений из разных столбцов и другого фрейма данных.

код, который создает новый столбец:

 df['normalized_value'] = df.apply(lambda x:
                                      x['value'] / rates_df.loc[rates_df['date'] == x['date'], 'EUR']
                                      if
                                      x['currency'] != 'EUR'
                                      else
                                      x['value'],
                                      axis=1)
 

после создания столбца он выглядит следующим образом:

 0        45500
1        32500
2        25000
3        33000
5        19000
         ...  
61790    60000
61791    57000
61792    50999
61793    66500
61794    67000
Name: normalized_value, Length: 59951, dtype: object
 

Затем я пытаюсь преобразовать его в тип с плавающей запятой, используя следующий код:

 df['normalized_value'] = pd.to_numeric(df['normalized_price'])
 

Возвращается следующая ошибка:

 TypeError: 'Series' objects are mutable, thus they cannot be hashed
 

Что я здесь делаю не так?

Комментарии:

1. Пожалуйста, покажите нам, что находится df['normalized_price'] после вызова apply

Ответ №1:

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

Внешний dataframe ( rates_df ) не содержал некоторых требуемых данных и по какой-то причине вернул строку вместо выдачи ошибки. Это привело к тому, что некоторые значения в df['normalized_value'] были фактическими строками, содержащими фактический тип ожидаемого значения.

Как только проблема с rates_df была решена, преобразование прошло без каких-либо проблем.