Умножение двух полей pandas

#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 методы, поскольку они лучше обрабатывают ошибки