我有一个相当高的长度(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
答案 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