我有一个包含事务列表的数据框,我想获取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
任何人都知道如何解决这个问题?
提前致谢。
答案 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列时,它只是用那个标量值重复字符串内容