加入pandas

时间:2018-03-08 15:25:29

标签: python pandas

我有2个数据帧: d1列:['文字','日期',' Date_with_affect'] - ID为索引:

  

89,' Hello',2018-03-05,2018-03-06

d2栏:['价格','打开','高','低''卷。& #39;,'更改'] - 将日期设置为 索引

  

2018-03-06,12,13,14,11,0,0.5

我想在d1数据框中添加新列,这将是一个'更改'来自d2的列" Date_with_affect "匹配" 日期"来自d2。 结果将是:

  

89,' Hello',2018-03-05,2018-03-06,0.5

如果日期不是d2那么应该选择第二天。 最简单的方法是什么? 我试图这样做,但我想这是完全错误的。

d1["Change"] = d2[d1["Date_with_affect"]].Change

1 个答案:

答案 0 :(得分:3)

对于这种情况,我认为您可以使用merge_asof(另外,我假设您的日期是日期时间格式。如果没有,请尝试使用pd.to_datetime转换它):

pd.merge_asof(
   d1,
   d2.reset_index()[['Date','Change']],
   left_on='Date_with_affect',
   right_on='Date'
)