python - pandas 时间戳和包含 timedelta 值的数组的总和

标签 python arrays numpy pandas time-series

我有一个开始日期和一个包含天数不规则样本值的数组,我想将其用作 pandas 系列的日期索引。

喜欢:

In [233]: date = pd.Timestamp('2015-10-17 08:00:00')
Out[233]: Timestamp('2015-10-17 08:00:00')

In [234]: sample_size = np.array([0,10,13,19,30])
Out[234]: array([  0.,  16.,  32.,  48.,  64.])

现在我可以使用列表和以下 for 循环来创建 pandas 日期时间系列:

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)

然后,为了将时间增量添加到日期中,您需要满足两个条件,首先您需要创建一个 timeseries您的日期,以便稍后您可以添加时间增量,第二件事是新创建的 timeseries必须具有与您的 timedelta 相同数量的元素,这可以通过 repeat(len(sample_size) 来实现

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]

关于python - pandas 时间戳和包含 timedelta 值的数组的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33752747/

相关文章:

php - 制作一个动态数组

ruby 数组内部结构

arrays - 按函数对(对称)numpy 二维数组进行排序。 (规范)

python - 运行一维 NumPy 数组的累积和

python - 有没有办法用 numpy 有效地反转矩阵数组?

python - 计算python字典中某个值出现的次数?

python - 在多行和多列的 Pandas 中使用滚动窗口计算中位数

python - 将列表中的项目添加到另一个列表中的字典

python - 查找下一个/最近的按钮 Selenium

PHP 数组的邻居