pandas.core.groupby.SeriesGroupBy.resample#

SeriesGroupBy.resample(rule, *args, include_groups=True, **kwargs)[源代码]#

在使用 TimeGrouper 时提供重采样。

给定一个分组器,该函数根据字符串“string” -> “frequency”对其进行重采样。

有关更多详细信息,请参阅 频率别名 文档。

参数:
规则str 或 DateOffset

表示目标分组器转换的偏移字符串或对象。

*args

可能的参数是 how, fill_method, limit, kindon,以及其他 TimeGrouper 的参数。

include_groups布尔值, 默认为 True

当为 True 时,将尝试在操作中包含分组,前提是它们是 DataFrame 的列。如果这引发 TypeError,结果将使用排除分组的方式计算。当为 False 时,在应用 func 时将排除分组。

Added in version 2.2.0.

自 2.2.0 版本弃用: 将 include_groups 设置为 True 已被弃用。在未来版本的 pandas 中,只允许使用 False 值。

**kwargs

可能的参数是 how, fill_method, limit, kindon,以及其他 TimeGrouper 的参数。

返回:
DatetimeIndexResampler, PeriodIndexResampler 或 TimdeltaResampler

用于索引类型的重采样器对象。

参见

Grouper

在按键分组时指定一个重采样频率。

DatetimeIndex.resample

时间序列的频率转换和重采样。

示例

>>> idx = pd.date_range("1/1/2000", periods=4, freq="min")
>>> df = pd.DataFrame(data=4 * [range(2)], index=idx, columns=["a", "b"])
>>> df.iloc[2, 0] = 5
>>> df
                    a  b
2000-01-01 00:00:00  0  1
2000-01-01 00:01:00  0  1
2000-01-01 00:02:00  5  1
2000-01-01 00:03:00  0  1

将 DataFrame 下采样到 3 分钟的时间箱,并将落入该时间箱的时间戳值求和。

>>> df.groupby("a").resample("3min", include_groups=False).sum()
                         b
a
0   2000-01-01 00:00:00  2
    2000-01-01 00:03:00  1
5   2000-01-01 00:00:00  1

将序列上采样到30秒的箱中。

>>> df.groupby("a").resample("30s", include_groups=False).sum()
                    b
a
0   2000-01-01 00:00:00  1
    2000-01-01 00:00:30  0
    2000-01-01 00:01:00  1
    2000-01-01 00:01:30  0
    2000-01-01 00:02:00  0
    2000-01-01 00:02:30  0
    2000-01-01 00:03:00  1
5   2000-01-01 00:02:00  1

按月重采样。值被分配给该期间的月份。

>>> df.groupby("a").resample("ME", include_groups=False).sum()
            b
a
0   2000-01-31  3
5   2000-01-31  1

如上所述,将序列下采样到3分钟的时间箱中,但关闭时间箱区间的右侧。

>>> (
...     df.groupby("a")
...     .resample("3min", closed="right", include_groups=False)
...     .sum()
... )
                         b
a
0   1999-12-31 23:57:00  1
    2000-01-01 00:00:00  2
5   2000-01-01 00:00:00  1

将序列下采样到3分钟的时间箱,并关闭时间箱区间的右侧,但使用右侧边缘而不是左侧来标记每个时间箱。

>>> (
...     df.groupby("a")
...     .resample("3min", closed="right", label="right", include_groups=False)
...     .sum()
... )
                         b
a
0   2000-01-01 00:00:00  1
    2000-01-01 00:03:00  2
5   2000-01-01 00:03:00  1