pandas使用where条件进行数学运算



我想对数据帧中的一个条件进行数学运算,但我做不到。

我的代码:

open_position=df.loc[df['sale_price'].isna(), 'purchase_price'*'amount'].sum()

我想这样做。把df['purchase_price']df['amount']相乘,其中df['sales_price']NaN,得到所有这些的和。

它给出以下错误。

TypeError: can't multiply sequence by non-int of type 'str'

你能帮忙吗?

试试这个:

df.loc[df['sale_price'].isna(), 'purchase_price'].mul(df['amount']).sum()

df['product'] = df['purchase_price'] * df['amount']
df.loc[df['sale_price'].isna(), 'product'].sum()

IIUC,您可以使用:

df.loc[df['sale_price'].isna()].apply(lambda row: row['purchase_price'] * row['amount'], axis=1).sum()

测试数据帧:

df = pd.DataFrame({'sale_price':[10, np.nan, 30], 'purchase_price':[5, 15, 25], 'amount':[1, 2, 3]})

最新更新