如何在 Pandas 中重复 DatetimeIndex

问题描述

如何创建重复日期范围?比如我想下面重复三遍

rng = pd.date_range('1/1/2011',periods=3,freq='W')

预期输出
2011-01-02
2011-01-09
2011-01-16
2011-01-02
2011-01-09
2011-01-16
2011-01-02
2011-01-09
2011-01-16

我已经尝试过:

rng = pd.concat([rng] * 3,axis=1) #这不适用于日期
rng = np.repeat(rng,3) #这样每个日期重复3次而不是列表3次?

解决方法

如果需要,我们可以使用 np.tile 并用 DatetimeIndex 包裹以保持类型:

rng = pd.DatetimeIndex(
    np.tile(pd.date_range('1/1/2011',periods=3,freq='W'),3)
)

rng

DatetimeIndex(['2011-01-02','2011-01-09','2011-01-16','2011-01-02','2011-01-16'],dtype='datetime64[ns]',freq=None)
,

用reduce试试

import functools
functools.reduce(pd.Index.append,[rng]*3)
Out[70]: 
DatetimeIndex(['2011-01-02',freq=None)
,

您可以使用 concat 函数到 PD 系列

rng = pd.date_range('1/1/2011',freq='W').to_series(index=[0,1,2])
pd.concat([rng]*3)