繁体   English   中英

如何使用熊猫向后生成日期范围?

[英]How can I generate a date range backwards using pandas?

我想提一个日期(比方说,2016-10-27)和一个持续时间(比方说,5天),我想要一个过去5天的日期范围,从最早的一天开始。

例如: 2016-10-22 2016-10-23 2016-10-24 2016-10-25 2016-10-26

我试过这个

pd.date_range('2016-10-27', freq='D', periods=5)[::-1]

但这给了我错误的逆序。

DatetimeIndex(['2016-10-31', '2016-10-30', '2016-10-29', '2016-10-28',
               '2016-10-27'],
              dtype='datetime64[ns]', freq='-1D')

我该怎么办>

IIUC我们可以使用end参数:

In [240]: pd.date_range(end='2016-10-27', freq='D', periods=5)
Out[240]: DatetimeIndex(['2016-10-23', '2016-10-24', '2016-10-25', '2016-10-26', '2016-10-27'], dtype='datetime64[ns]', freq='D')

要么:

In [242]: pd.date_range(end='2016-10-27', freq='D', periods=5) - pd.Timedelta('1 day')
Out[242]: DatetimeIndex(['2016-10-22', '2016-10-23', '2016-10-24', '2016-10-25', '2016-10-26'], dtype='datetime64[ns]', freq='D')

选项1
抵消开始日期

pd.date_range(
    start=pd.Timestamp('2016-10-27') - pd.offsets.Day(4),
    freq='D', periods=5)

DatetimeIndex(['2016-10-23', '2016-10-24', '2016-10-25', '2016-10-26',
               '2016-10-27'],
              dtype='datetime64[ns]', freq='D')

选项2
讨厌!!!! 太可怕了。 我发布这个的唯一理由是我想找到一些替代方案。

pd.to_datetime(['2016-10-27']).values + pd.to_timedelta([1], 'D')[:, None] * -np.arange(5)[::-1]

array([['2016-10-23T00:00:00.000000000', '2016-10-24T00:00:00.000000000',
        '2016-10-25T00:00:00.000000000', '2016-10-26T00:00:00.000000000',
        '2016-10-27T00:00:00.000000000']], dtype='datetime64[ns]')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM