pandas: преобразовать тип 'object'

Необходимо рассчитать СРМ, однако в датасете необходимый столбец 'Spend' имеет значение 'object',

import pandas as pd

df=pd.read_csv('test_data.csv',sep=',')

введите сюда описание изображения

metrics_cpm = df.groupby('Buyer', as_index= False).agg({'Spend': 'sum', 'Impressions': 'sum'})metrics_cpm

введите сюда описание изображения

metrics_cpm['Cost Per Mille'] = round(metrics_cpm['Spend']/metrics_cpm['Impressions']*1000, 5)metrics_cpm

введите сюда описание изображения

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

df['Spend'] = df['Spend'].str.replace(',','.','').astype(np.float64)

однако ошибка сохраняется, как мне произвести рассчет?


Ответы (1 шт):

Автор решения: CrazyElf

Добавьте параметр decimal=',' в вызов pd.read_csv, это более правильно, чем делать replace вручную потом. Конечно, это странноватая ситуация, когда у вас и разделитель колонок и разделитель разрядов один и тот же символ ,, но в принципе такое может быть, в этом случае содержимое колонок приходит в кавычках и Pandas может разобраться где что.

Либо, если хочется всё же менять вручную, можно делать .str.replace(',','.'), а ваш вариант .str.replace(',','.','') заменял всё в на пустую строку, которая превращалась в итоге в значения NA после преобразования в float.

→ Ссылка