根据最近的日期时间将数据帧合并/加入到不同的数据帧

时间:2016-07-06 21:41:13

标签: python datetime pandas dataframe

我有一个相当高的长度(100,000+)的pandas数据帧,我想将这个数据帧与另一个基于最接近的元素(通过索引)合并到另一个数据帧对象。例如,让我们说对象1如下:

 DateTime                x_1   y_1
 2016-07-05 08:30:00     1     2
 2016-07-05 08:30:01     3     4 
 2016-07-05 08:30:02     5     6
 2016-07-05 08:30:03     7     8
 2016-07-05 08:30:05     9     10
 2016-07-05 08:30:11     11    12

和对象2如下:

 DateTime                x_2   y_2
 2016-07-05 08:30:00     13    14
 2016-07-05 08:30:05     15    16
 2016-07-05 08:30:05     17    18
 2016-07-05 08:30:10     19    20

我想返回一个新对象object3,它与object2的长度相同,现在包含object1中最接近object2时间的项目。在这种情况下,Object3看起来像这样:

 DateTime                x_2   y_2   x_1   y_1  
 2016-07-05 08:30:00     13    14    1     2
 2016-07-05 08:30:05     15    16    9     10
 2016-07-05 08:30:05     17    18    9     10
 2016-07-05 08:30:10     19    20    11    12

我目前在这些方面做了一些事情来实现这一点,但我得到了reindex错误(非唯一索引):

object3 = object2.join(object1.reindex(object2.index, method='nearest'), how='left')

返回valueerror:

ValueError: cannot reindex a non-unique index with a method or limit

1 个答案:

答案 0 :(得分:3)

对另一个索引的唯一值执行reindex。您将在加入期间获取重复项。

object3 = object2.join(object1.reindex(object2.index.unique(), method='nearest'))

结果输出:

                     x_2  y_2  x_1  y_1
DateTime                               
2016-07-05 08:30:00   13   14    1    2
2016-07-05 08:30:05   15   16    9   10
2016-07-05 08:30:05   17   18    9   10
2016-07-05 08:30:10   19   20   11   12