我试图通过引用数据框2在数据框1中计算“ price_lastyear”。在数据框1中,对于XXX,年份为2017。 因此,2017年的最后一年是2016年。因此,它必须在数据框2中引用2016年的相同品牌,获取价格并在数据框1中的相应行中填充。
Dataframe 1:
car_model year price_lastyear
XXX 2017 16411
Dataframe 2:
car_model year price
XXX 2016 16411
XXX 2017 11432
XXX 2018 12345
尝试使用以下方法连接2个熊猫数据框:
df3 = df1.merge(df2, how=inner, left_on=["car_model","year-1"], right_on=["car_model","year"]
不确定join是否是实现上述结果的最佳操作。
答案 0 :(得分:2)
您可以修改年份并合并:
df1.merge(df2.assign(year=df2['year']+1),
on=['car_model','year'],
how='left')
输出:
car_model year price_lastyear price
0 XXX 2017 16411 16411
答案 1 :(得分:1)
让我们检查merge_asof
out = pd.merge_asof(df1,df2.assign(Pyear=df2.year),on='year', by='car_model', allow_exact_matches=False)
car_model year price_lastyear price Pyear
0 XXX 2017 16411 16411 2016