Python 连接2个数据帧

Python 连接2个数据帧,python,pandas,Python,Pandas,我试图通过引用数据帧2来计算数据帧1中去年的价格。在数据框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 164

我试图通过引用数据帧2来计算数据帧1中去年的价格。在数据框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是否是实现上述结果的最佳操作。

您可以修改年份并合并:

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

您可以修改年份并合并:

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
让我们检查merge_asof

让我们检查merge_asof


谢谢你的回复。它可以工作,但年份分配不应更改。在数据框1中,年份应保持为2017年。不确定如何在代码中执行该操作。@user3447653请参阅更新。我们可以在df2中更改年份。谢谢您的回复。它可以工作,但年份分配不应更改。在数据框1中,年份应保持为2017年。不确定如何在代码中执行该操作。@user3447653请参阅更新。我们可以改为在df2中更改年份。@user3447653然后在df1=df1之前进行排序。sort_值为'year';df2=df2.sort_值'year'@user3447653然后在df1=df1.sort_值'year'之前进行排序;df2=df2.排序值'year'