#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
была решена, преобразование прошло без каких-либо проблем.