【问题标题】:Set pandas datetime index one day forward将 pandas 日期时间索引向前一天设置
【发布时间】:2014-12-17 20:21:49
【问题描述】:

是否可以在 pandas 中将日期时间索引向前设置一天?

我有这个索引

mydata.data.index
Out[7]: <class 'pandas.tseries.index.DatetimeIndex'>
[2013-01-27 22:00:00, ..., 2014-12-16 22:00:00]
Length: 500, Freq: None, Timezone: None

这是错误的。数据开始的正确日期是后一天。那是 2014-12-17,它们在 2013-01-28 结束

有没有办法解决这个问题?

【问题讨论】:

  • "28.0.2014";什么时候发生的?
  • 为了保持一致和清晰,请在文本中使用与代码中相同的格式 (yyyy-mm-dd)。
  • 是的,对不起,这是一个错字。我只是习惯了欧洲格式的错误纠正它。
  • 结束日期早于开始日期;你的意思可能是相反的。
  • 我不太了解 Pandas,但我会尝试将 datetime.timedelta(1) 添加到 mydata.data.index 看看会发生什么。

标签: python datetime pandas


【解决方案1】:

一些不同的选择:

使用shift 方法:

In [10]: dti = pd.date_range('2012-01-01', periods=2)

In [11]: dti
Out[11]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-01-01, 2012-01-02]
Length: 2, Freq: D, Timezone: None

In [13]: dti.shift(1, freq='D')
Out[13]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-01-02, 2012-01-03]
Length: 2, Freq: D, Timezone: None

但也许更简单(正如@Evert 所指出的那样),您可以简单地添加一天的时间增量:

In [14]: dti + pd.Timedelta('1 day')
Out[14]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-01-02, 2012-01-03]
Length: 2, Freq: None, Timezone: None

对于较旧的 pandas 版本,您也可以只使用datetime.timedelta(days=1)pd.Timedelta 仅从 0.15 开始可用)。

【讨论】:

    猜你喜欢
    • 2016-01-17
    • 2021-07-12
    • 1970-01-01
    • 2016-11-30
    • 2014-03-07
    • 1970-01-01
    • 2017-04-24
    • 2018-10-30
    相关资源
    最近更新 更多