【问题标题】:Merging two datetime-indexed pandas.dataframe objects合并两个日期时间索引的 pandas.dataframe 对象
【发布时间】:2016-07-05 15:07:22
【问题描述】:

我有两个日期时间索引的 pandas.dataframe 对象:

对象1:

 DateTime                     Bid.ESU6  Ask.ESU6
 2016-06-28 08:30:00          207000    207025   
 2016-06-28 08:30:11          206975    207000   
 2016-06-28 08:30:21          207000    207050  

对象2:

 DateTime                     Bid.YMU6  Ask.YMU6
 2016-06-28 08:30:00          12793     12795
 2016-06-28 08:30:02          12793     12795
 2016-06-28 08:30:05          12794     12796
 2016-06-28 08:30:08          12793     12794
 2016-06-28 08:30:10          12792     12794
 2016-06-28 08:30:15          12792     12795
 2016-06-28 08:30:22          12794     12797

我想合并这两个数据框对象,但只合并来自 object1 的日期。我想在 object1 中创建与 object2 最接近的日期时间相对应的新列。在上面的示例中,我希望输出以下内容:

 DateTime                     Bid.ESU6  Ask.ESU6  Bid.YMU6  Ask.YMU6
 2016-06-28 08:30:00          207000    207025    12793     12795
 2016-06-28 08:30:11          206975    207000    12792     12794
 2016-06-28 08:30:21          207000    207050    12794     12797

有没有一种简单的方法可以做到这一点,而无需从 object1 开始遍历每一行的 for 循环?

提前感谢您的帮助!

【问题讨论】:

  • object1.merge(object2, left_index=True, right_index=True, how='left') 应该可以工作
  • 我正在考虑做类似的事情:object1.join(object2, how='left'),但这给出了 NaN,除非两个对象中的 DateTime 完全相等。我希望它返回具有最近日期时间的元素,而不是确切的日期时间。

标签: python pandas


【解决方案1】:

在执行join 之前,您可以在object2 上使用reindexmethod='nearest'

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

结果输出:

                     Bid.ESU6  Ask.ESU6  Bid.YMU6  Ask.YMU6
DateTime                                                   
2016-06-28 08:30:00    207000    207025     12793     12795
2016-06-28 08:30:11    206975    207000     12792     12794
2016-06-28 08:30:21    207000    207050     12794     12797

【讨论】:

    猜你喜欢
    • 2021-11-29
    • 2018-01-22
    • 1970-01-01
    • 2020-12-02
    • 2019-09-23
    • 1970-01-01
    • 2019-06-27
    • 2020-06-25
    • 1970-01-01
    相关资源
    最近更新 更多