假设我有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
中的索引?
答案 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