#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
У меня есть фрейм данных со списком транзакций, и я хотел бы взять поле exec_price и умножить его на поле size, чтобы я мог получить общую стоимость.
Итак, я хотел бы добавить новое поле: стоимость = exec_price * размер
date security action size ask_price exec_price
order_id
188 2016-10-24 10:04:44 AAPL buy 5 116.599998 117.44
189 2016-10-24 10:04:44 NFLX buy 5 127.5 128.4
190 2016-10-24 10:04:44 AMD buy 5 6.52 6.65
status
order_id
188 filled
189 filled
190 filled
Когда я пытаюсь увеличить число, используя:
transactions['cost'] = transactions['exec_price'] * transactions['size']
Я понимаю это:
date security action size ask_price exec_price
order_id
188 2016-10-24 10:04:44 AAPL buy 5 116.599998 117.44
189 2016-10-24 10:04:44 NFLX buy 5 127.5 128.4
190 2016-10-24 10:04:44 AMD buy 5 6.52 6.65
status cost
order_id
188 filled 117.44117.44117.44117.44117.44
189 filled 128.4128.4128.4128.4128.4
190 filled 6.656.656.656.656.65
Кто-нибудь знает, как я могу это исправить?
Заранее спасибо.
Ответ №1:
Это потому, что str
измените его на float, используя astype
:
transactions['exec_price'] = transactions['exec_price'].astype(float)
или более безопасное использование to_numeric
для обработки любых значений duff:
transactions['exec_price'] = pd.to_numeric(transactions['exec_price'], errors='coerce')
Когда вы умножаете столбец str, он просто повторяет содержимое строки на это скалярное значение
Комментарии:
1. Отлично, это сработало! Ранее я делал float (столбец), и это не работало. Спасибо!
2. Чтобы изменить dtype, используйте,
astype
если тип столбца может быть безопасно принудительно изменен, в противном случае используйте встроенныеto_XXXX
методы, поскольку они лучше обрабатывают ошибки