pandas.Series.resample

Series.resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention='start', kind=None, loffset=None, limit=None, base=0, on=None, level=None)[source]

时间序列的频率转换和重采样的方便方法。对象必须具有类datetime索引(DatetimeIndex,PeriodIndex或TimedeltaIndex),或者将类datetime类型的值传递给on或level关键字。

参数:

规则:string

表示目标转换的偏移字符串或对象

axis:int,可选,默认为0

已关闭:{'right','left'}

bin间隔的哪一侧被关闭

标签:{'right','left'}

哪个bin边标签到标签桶

约定:{'start','end','s','e'}

loffset:timedelta

调整重新采样的时间标签

base:int,default 0

对于平均细分1天的频率,聚合间隔的“原点”。例如,对于“5min”频率,base可以在从0到4的范围内。默认为0

on:string,可选

对于DataFrame,要使用列而不是索引进行重新采样。列必须是类datetime。

版本0.19.0中的新功能。

level:string或int,可选

对于MultiIndex,用于重新采样的级别(名称或数字)。级别必须是datetime-like。

版本0.19.0中的新功能。

要了解有关偏移字符串的详情,请参阅“此链接

< http://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases>`__。

例子

首先创建一个包含9分钟时间戳的序列。

>>> index = pd.date_range('1/1/2000', periods=9, freq='T')
>>> series = pd.Series(range(9), index=index)
>>> series
2000-01-01 00:00:00    0
2000-01-01 00:01:00    1
2000-01-01 00:02:00    2
2000-01-01 00:03:00    3
2000-01-01 00:04:00    4
2000-01-01 00:05:00    5
2000-01-01 00:06:00    6
2000-01-01 00:07:00    7
2000-01-01 00:08:00    8
Freq: T, dtype: int64

将系列缩减为3分钟bin,并将落入bin的时间戳的值相加。

>>> series.resample('3T').sum()
2000-01-01 00:00:00     3
2000-01-01 00:03:00    12
2000-01-01 00:06:00    21
Freq: 3T, dtype: int64

将系列缩小到如上所述的3分钟箱,但使用右边缘而不是左边标记每个箱。请注意,用作标签的值区中的值不包括在其标记的值区中。例如,在原系列中,桶2000-01-01 00:03:00包含值3,但是总和值带有标签``2000-01-01 00:03:00``的重采样桶不包括3(如果是,则求和值为6,而不是3)。要包括此值,请关闭bin间隔的右侧,如下面的示例所示。

>>> series.resample('3T', label='right').sum()
2000-01-01 00:03:00     3
2000-01-01 00:06:00    12
2000-01-01 00:09:00    21
Freq: 3T, dtype: int64

将系列缩小到如上所述的3分钟bin,但关闭bin间隔的右侧。

>>> series.resample('3T', label='right', closed='right').sum()
2000-01-01 00:00:00     0
2000-01-01 00:03:00     6
2000-01-01 00:06:00    15
2000-01-01 00:09:00    15
Freq: 3T, dtype: int64

将系列取样到30秒箱中。

>>> series.resample('30S').asfreq()[0:5] #select first 5 rows
2000-01-01 00:00:00     0
2000-01-01 00:00:30   NaN
2000-01-01 00:01:00     1
2000-01-01 00:01:30   NaN
2000-01-01 00:02:00     2
Freq: 30S, dtype: float64

将系列取样到30秒箱中,并使用pad方法填充NaN值。

>>> series.resample('30S').pad()[0:5]
2000-01-01 00:00:00    0
2000-01-01 00:00:30    0
2000-01-01 00:01:00    1
2000-01-01 00:01:30    1
2000-01-01 00:02:00    2
Freq: 30S, dtype: int64

将系列取样到30秒箱中,并使用bfill方法填充NaN值。

>>> series.resample('30S').bfill()[0:5]
2000-01-01 00:00:00    0
2000-01-01 00:00:30    1
2000-01-01 00:01:00    1
2000-01-01 00:01:30    2
2000-01-01 00:02:00    2
Freq: 30S, dtype: int64

通过apply传递自定义函数

>>> def custom_resampler(array_like):
...     return np.sum(array_like)+5
>>> series.resample('3T').apply(custom_resampler)
2000-01-01 00:00:00     8
2000-01-01 00:03:00    17
2000-01-01 00:06:00    26
Freq: 3T, dtype: int64
Scroll To Top