我想对数据帧中的一个条件进行数学运算,但我做不到。
我的代码:
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]})