从一列中减去另一列中的值

2024-05-03 04:31:58 发布

您现在位置:Python中文网/ 问答频道 /正文

df_1

product_name  amount   price
     a           1        1
     b           2        2
     c           3        3
     d           4        4

df_2
product_name  amount
     a           1    
     b           2 

以下是pandas中两个数据帧的示例。在

我想用product_names减去amounta的乘积是amount0,而b的乘积也为0。。。具有product_name列值。在

谢谢你的时间


Tags: 数据name示例pandasdfnames时间product
3条回答

选项1
使用df.isin利用您的数据:

mask = a.product_name.isin(b.product_name)
a.loc[mask, 'amount'] = 0

a
  product_name  amount  price
0            a       0      1
1            b       0      2
2            c       3      3
3            d       4      4

选项2
set_index+reindex+subtract。稍微更健壮,不设置为0

^{pr2}$

你也可以合并然后做减法

df = df1.merge(df2,how='left',on='product_name',suffixes=('','R'))
df.amount = df.amount - df.amountR.fillna(0)

  product_name  amount  price  amountR
0            a     0.0      1      1.0
1            b     0.0      2      2.0
2            c     3.0      3      NaN
3            d     4.0      4      NaN

假设你有

数据框1

product_name | amount | price
     a           1        1
     b           2        2
     c           3        3
     d           4        4

东风2

^{pr2}$

可以使用set_index将product_name设置为df_1和df_2的索引,然后使用fill_value=0的subtract()来维护两个数据帧中不存在的任何值。在

df_1.set_index('product_name').subtract(df_2.set_index('product_name'), fill_value=0).reset_index()

上面的代码产生

product_name  | amount | price
     a           0.0      1.0
     b           0.0      2.0
     c           3.0      3.0
     d           4.0      4.0

这个问题非常类似于subtracting two dataframes

相关问题 更多 >