将两个pandas字段相乘

时间:2016-10-24 14:35:07

标签: python pandas dataframe

我有一个包含事务列表的数据框,我想获取exec_price字段并将其与size字段相乘,以便我可以获得总成本。

所以,我想添加一个新字段:cost = exec_price * 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  
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 个答案:

答案 0 :(得分:5)

这是因为str使用astype将其更改为浮动:

transactions['exec_price'] = transactions['exec_price'].astype(float)

或更安全地使用to_numeric来处理任何duff值:

transactions['exec_price'] = pd.to_numeric(transactions['exec_price'], errors='coerce')

当你乘以一个str列时,它只是用那个标量值重复字符串内容