Python 时间戳和包含时间增量值的数组的总和
我有一个开始日期和一个数组,其中包含以天为单位的不规则样本值,我想将其用作熊猫系列的日期索引 比如: 现在,我可以使用一个列表和以下for循环来创建pandas日期时间序列:Python 时间戳和包含时间增量值的数组的总和,python,arrays,numpy,pandas,time-series,Python,Arrays,Numpy,Pandas,Time Series,我有一个开始日期和一个数组,其中包含以天为单位的不规则样本值,我想将其用作熊猫系列的日期索引 比如: 现在,我可以使用一个列表和以下for循环来创建pandas日期时间序列: In [235]: all_dates = [] for stepsize in sample_size: days = pd.Timedelta(stepsize, 'D') all_dates.append(date + days)
In [235]: all_dates = []
for stepsize in sample_size:
days = pd.Timedelta(stepsize, 'D')
all_dates.append(date + days)
pd.Series(all_dates)
Out[235]: 2015-10-17 08:00:00
2015-10-27 08:00:00
2015-10-30 08:00:00
2015-11-05 08:00:00
2015-11-16 08:00:00
dtype: datetime64[ns]
但我希望有一个纯粹的numpy或pandas解决方案,而不需要列表和for循环
In [11]:
pd.Series(pd.TimedeltaIndex(sample_size , unit = 'D') + date)
Out[11]:
0 2015-10-17 08:00:00
1 2015-10-27 08:00:00
2 2015-10-30 08:00:00
3 2015-11-05 08:00:00
4 2015-11-16 08:00:00
dtype: datetime64[ns]
首先,您需要为要添加到日期中的所有值创建一个时间增量,请注意,我已将D
指定为一个参数,这意味着我们需要时间增量频率以天为单位,因为我们要将天添加到日期中
In [42]:
time_delta = pd.TimedeltaIndex(sample_size, unit = 'D')
time_delta
Out[42]:
TimedeltaIndex(['0 days', '10 days', '13 days', '19 days', '30 days'], dtype='timedelta64[ns]', freq=None)
然后,为了将时间增量添加到日期中,您需要满足两个条件,首先需要创建日期的时间序列
,以便以后可以向其添加时间增量,第二件事是新创建的时间序列
必须具有与时间增量
相同数量的元素,这可以通过重复(len(样本大小)
这似乎是可行的,所以首先必须创建一个长度等于
date
的系列,长度为sample\u size
。仍然有点麻烦。我添加了一些解释来详细说明此解决方案的工作原理。您不需要手动广播,只需添加它们,它就可以工作series(pd.to\u timedelta(样本大小,单位为D')+日期)
In [42]:
time_delta = pd.TimedeltaIndex(sample_size, unit = 'D')
time_delta
Out[42]:
TimedeltaIndex(['0 days', '10 days', '13 days', '19 days', '30 days'], dtype='timedelta64[ns]', freq=None)
In [40]:
time_stamp = pd.Series(np.array(date).repeat(len(sample_size)))
time_stamp
Out[40]:
0 2015-10-17 08:00:00
1 2015-10-17 08:00:00
2 2015-10-17 08:00:00
3 2015-10-17 08:00:00
4 2015-10-17 08:00:00
dtype: datetime64[ns]
In [41]:
time_stamp + time_delta
Out[41]:
0 2015-10-17 08:00:00
1 2015-10-27 08:00:00
2 2015-10-30 08:00:00
3 2015-11-05 08:00:00
4 2015-11-16 08:00:00
dtype: datetime64[ns]