Divide/Multiply DF 中的某些行被其他具有条件的 Df

Divide/Multiply certain rows in a DF by other Df with conditions

我得到了 2 个 df 第一个按国家和年份划分的购买价格

year purchase country
1999 23 Canada
2000 24 Canada
1999 21 China
2999 22 China

其他按年份销售价格

year price
1999 25
2000 27

所以我想得到这样的列比率:

year purchase country ratio
1999 23 Canada 1.086
2000 24 Canada 1.25
1999 21 China 1.19
2999 22 China 1.22

这就像在年份相同的情况下除以售价。 我试过类似的东西:

np.divide(selling["price"],purchase.Price, where= selling["year"]== purchase["years"])

但是没有成功。

我试图在不创建额外元素的情况下只用一行代码来完成。 因为我认为我可以通过在

这样的年份创建另一个变量 运行 来解决它
for years in purchase.years: 
   purchase["ratio"] = np.divide(selling[selling.years].Price,purchase[purchase.years ==  years].Price)

您可以将两个表连接在一起。

merged_df = df1.merge(df2, 
                      on = ['year'],
                      how = 'left')

merged_df['ratio'] = merged_df['price']/merged_df['purchase']
merged_df.drop('price', axis = 1)

你可以做到 reindexrdiv

df1['ratio'] = df1['purchase'].rdiv(df2.set_index('year')['price'].reindex(df1['year']).values)
df1
Out[316]: 
   year  purchase country     ratio
0  1999        23  Canada  1.086957
1  2000        24  Canada  1.125000
2  1999        21   China  1.190476
3  2999        22   China       NaN