【问题标题】:Add a number of days to a date/datetime (Pandas/Numpy)将天数添加到日期/日期时间(Pandas/Numpy)
【发布时间】:2018-10-20 21:50:32
【问题描述】:

在 Pandas 中,我想在日期/日期时间(两列)中添加天数。

例子:

dates = pd.Series(pd.date_range("20180101 00:00", "20180104 00:00"))

0   2018-01-01
1   2018-01-02
2   2018-01-03
3   2018-01-04
dtype: datetime64[ns]

days = pd.Series(np.arange(4)).astype('float')

0    0.0
1    1.0
2    2.0
3    3.0
dtype: float64

我尝试过的(以及我得到的相关错误):

dates + days

TypeError: 不能对没有 datetime64[ns] 类型的系列/ndarray 或 timedelta 的 rhs 的系列进行操作

dates + days.astype('int')

TypeError:日期时间/时间增量操作的类型不兼容 [__add__]

dates + pd.DateOffset(days=days)

TypeError: DatetimeIndex 无法执行操作 +

dates + np.timedelta64(days.values)

ValueError: 无法将对象转换为 NumPy 时间增量

dates + pd.offsets.Day(days)

TypeError:无法将系列转换为

dates + pd.datetools.timedelta(days=days)

TypeError: timedelta days 组件不支持的类型:系列

【问题讨论】:

    标签: python pandas date numpy datetime


    【解决方案1】:

    我终于找到了两种方法!:

    dates + pd.to_timedelta(days, unit='D') 
    

    dates + pd.TimedeltaIndex(days, unit='D')
    

    两者都产生:

    0   2018-01-01
    1   2018-01-03
    2   2018-01-05
    3   2018-01-07
    dtype: datetime64[ns]
    

    (花了很长时间才找到相关文档:https://pandas.pydata.org/pandas-docs/stable/timedeltas.html#to-timedelta

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-25
      • 2011-01-20
      • 2021-06-10
      • 2021-04-26
      • 2010-10-08
      • 1970-01-01
      • 2023-03-06
      • 2023-03-09
      相关资源
      最近更新 更多