【问题标题】:How do I repeat a DatetimeIndex in pandas如何在熊猫中重复 DatetimeIndex
【发布时间】:2021-08-01 02:39:32
【问题描述】:

如何创建重复的日期范围?例如,我希望以下内容重复三遍

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) #这将每个日期重复三次而不是列表三次?

【问题讨论】:

    标签: pandas repeat datetimeindex


    【解决方案1】:

    如果需要,我们可以使用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-09', '2011-01-16', '2011-01-02', '2011-01-09',
                   '2011-01-16'],
                  dtype='datetime64[ns]', freq=None)
    

    【讨论】:

      【解决方案2】:

      尝试减少

      import functools
      functools.reduce(pd.Index.append,[rng]*3)
      Out[70]: 
      DatetimeIndex(['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'],
                    dtype='datetime64[ns]', freq=None)
      

      【讨论】:

        【解决方案3】:

        PD 系列可以只使用 concat 函数

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-27
          • 2016-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-17
          • 1970-01-01
          • 2013-02-18
          相关资源
          最近更新 更多