问题描述
如何创建重复日期范围?比如我想下面重复三遍
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)