Python 以预定义的时间值进行采样

Python 以预定义的时间值进行采样,python,datetime,numpy,pandas,timestamp,Python,Datetime,Numpy,Pandas,Timestamp,这是另一个问题的后续问题: 假设我有以下时间序列: money_spent timestamp 2014-10-06 18:00:40.063000-04:00 0.568000 2014-10-06 18:00:41.361000-04:00 3.014770 2014-10-06 18:00:42.896000-04:00 0.878154 2014-10-0

这是另一个问题的后续问题:

假设我有以下时间序列:

                                   money_spent
timestamp                 
2014-10-06 18:00:40.063000-04:00      0.568000
2014-10-06 18:00:41.361000-04:00      3.014770
2014-10-06 18:00:42.896000-04:00      0.878154
2014-10-06 18:00:43.040000-04:00      0.723077
2014-10-06 18:00:44.791000-04:00      0.723077
2014-10-06 18:00:45.496000-04:00      0.309539
2014-10-06 18:00:45.799000-04:00      3.032000
2014-10-06 18:00:47.470000-04:00      3.014770
2014-10-06 18:00:48.092000-04:00      1.584616
我想试一试:

  • 预定义的时间点(例如,从18:00到19:00,每隔
    2.5
    秒的时间戳范围)
  • 对于每个样本,获取间隔内花费的总和
更新示例 例如,假设我生成一组预定义的时间戳,如下所示:

# Start at 18:00
start_time = datetime.datetime(year   = 2014, 
                               month  = 10, 
                               day    = 6, 
                               hour   = 18, 
                               tzinfo = pytz.timezone('US/Eastern')

# Finish 400 seconds later
end_time    = start_time + datetime.timedelta(seconds=400)

my_new_timestamps = pd.date_range(start = start_time, 
                                  end   = end_time, 
                                  freq  = '2.5s')
我想通过获取花费的
金钱的总和,在文章顶部的
我的新时间戳定义的位置上重新采样我的原始数据框

请注意,原始数据帧仅涵盖从~18:00:40到~18:00:48,因此如果我这样做:

resample('2.5S',how='sum',label='right')


上述命令将仅在这两个时间之间的时间窗口上返回样本,不在
my_new_时间戳定义的开始时间和结束时间之间返回样本。它还将在
2.5s
间隔上取样,这些间隔与我想要的间隔(那些由
my_new_Timestaps
定义的间隔)不同。

请发布你期望的,因为我认为
df.resample('2500L','how='sum')
对你不起作用。谢谢@Jeff我更新了帖子。
resample
的问题是,它只考虑我有数据的时间值(即数据帧索引定义的时间窗口),但我希望获得不同时间戳集的样本。尝试使用
freq='2500L'
;频率中有一个分数错误(它会使频率变为5s,这是错误的)。你可以简单地重新采样,它会像你想要的那样工作。如果你真的想(之前或之后)恢复到你的全部范围,你可以重新编制索引,但那将是NaNThanks@Jeff。如果我事先重新编制索引,
重新采样
会从数据帧中的第一个时间戳开始计数吗?(如果是这样,这完全解决了问题)。是的,它将“捕捉”到第一个频率(如果需要,可以使用
loffset
和/或
label
,从最大的戳记开始计算)