如何串联熊猫中的DatetimeIndex对象?

时间:2019-04-15 19:17:30

标签: python pandas datetime

假设我有3个熊猫DatetimeIndex对象:

import pandas as pd

idx1 = pd.date_range('2019-01-01 00:00:00', '2019-01-01 01:00:00', freq='5T')
idx2 = pd.date_range('2019-01-01 02:00:00', '2019-01-01 03:00:00', freq='5T')
idx3 = pd.date_range('2019-01-02 00:00:00', '2019-01-02 01:00:00', freq='5T')

如何将它们合并为一个索引?

回旋处的方法是先将它们转换为series,然后使用pandas.concat函数将它们组合起来,然后将序列转换回DatetimeIndex

# This works, but requires type conversions to and from
# intermediate series objects:
combined = pd.concat([idx1.to_series(), idx2.to_series(), idx3.to_series()])
idx = pd.DatetimeIndex(combined.values)

是否有直接的方法来合并pandas中的索引?

3 个答案:

答案 0 :(得分:1)

尝试使用“工会”条款。

combined = idx1.union(idx2).union(idx3)

答案 1 :(得分:0)

combined = idx1.union_many([idx2,idx3,...])

尽管Panda关于此功能的文档说:

可以加速结合索引集合的一些技巧

答案 2 :(得分:0)

就我而言,这就是我所需要的:

ixfull = pd.DatetimeIndex(np.unique(np.hstack(ix_list)))

union(a, b) = a + b - intersection(a, b) = unique(a + b)起。详细版本如下:

fastunion = lambda x: np.unique(np.hstack(x))
def ixlist2ix(ix_list):
    ixunion = fastunion(ix_list)
    ixfull = pd.DatetimeIndex(ixunion)
    return ixfull