Skip to main content
 首页 » 编程设计

python之从另一个数据框中添加数据框中的列进行一些算术计算 python

2025年05月04日15zlslch

我在 pandas df 中有一张 table

id   product_1   product_2   count   
1        100       200          10 
2        200       600          20 
3        100       500          30 
4        400       100          40 
5        500       700          50 
6        200       500          60 
7        100       400          70 

我在数据框 df2 中还有另一个表

product    price 
100         5 
200         10 
300         15 
400         20 
500         25 
600         30 
700         35 

我必须在我的第一个 df 中创建一个新列 price_product2,从 df2 中获取关于 product_2 的价格值。 并找出 product_2 相对于 product_1 的百分比差异 并制作一列 %_diff 。

即 假设 product_1 = 100 和 product_2 = 200。因此 product_2 是 100 价格的 200%。

同样,如果product_1 = 400 且product_2 = 100,则为价格下跌。 因此 product_2 是 product_1 的 -25%。

我的最终输出应该是。 df =

id   product_1   product_2    count  price_product_2  %_diff 
1        100       200          10     10               +200 
2        200       600          20     30               +300 
3        100       500          30     25               +500 
4        400       100          40     5                -25 
5        500       700          50     35               +140 
6        200       500          60     25               +250 
7        100       400          70     20               -71.42 

有什么实现方法吗?

我正在尝试使用 map 功能。

df['price_product_2'] = df['product_2'].map(df2.set_index('product_id')['price']) 

但我只能得到一列,如何得到 %_diff 列?

请您参考如下方法:

使用merge(或map)两次,每个产品一次,然后计算差值。

# Add prices for products 1 and 2 
df3 = (df1. 
       merge(df2, left_on='product_1', right_on='product'). 
       merge(df2, left_on='product_2', right_on='product')) 
 
# Calculate the percent difference 
df3['pct_diff'] = (df3.price_y - df3.price_x) / df3.price_x