python两列相乘_我要在熊猫DataFrame中将两列相乘并将结果添加到新列中

在Pandas DataFrame中,用户试图根据'Action'列('Sell'或'Buy')将'Prices'和'Amount'两列相乘,并将结果存储在新的'Value'列中。遇到的问题是'Value'列的所有值都为正,而预期某些值应为负。解决方案包括使用apply、where或其他DataFrame方法来根据'Action'列的值调整乘积的符号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我要在熊猫DataFrame中将两列相乘并将结果添加到新列中

我正在尝试将pandas Dataframe(orders_df)中的两个现有列相乘-价格(股票收盘价)和Amount(股票数量),并将计算结果添加到名为“值”的新列中。 由于某种原因,当我运行此代码时,“值”列下的所有行均为正数,而某些行应为负数。 在DataFrame的“操作”列下,有七行带有“出售”字符串,七行带有“购买”字符串。

for i in orders_df.Action:

if i == 'Sell':

orders_df['Value'] = orders_df.Prices*orders_df.Amount

elif i == 'Buy':

orders_df['Value'] = -orders_df.Prices*orders_df.Amount)

请让我知道我做错了!

OAK asked 2020-01-26T20:14:43Z

7个解决方案

71 votes

我认为一个不错的解决方案是使用API docs方法(另请参见API docs):

In [37]: values = df.Prices * df.Amount

In [38]: df['Values'] = values.where(df.Action == 'Sell', other=-values)

In [39]: df

Out[39]:

Prices Amount Action Values

0 3 57 Sell 171

1 89

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值