pandas.core.resample.Resampler.apply#
- Resampler.apply(func=None, *args, **kwargs)[源代码]#
在指定轴上使用一个或多个操作进行聚合。
- 参数:
- 函数函数, 字符串, 列表或字典
用于聚合数据的函数。如果是一个函数,必须在工作时传递一个 DataFrame 或在传递给 DataFrame.apply 时工作。
接受的组合是:
函数
字符串函数名
函数列表和/或函数名,例如
[np.sum, 'mean']
轴标签字典 -> 函数、函数名或此类列表。
- *args
传递给 func 的位置参数。
- **kwargs
传递给 func 的关键字参数。
- 返回:
- 标量, 序列或数据框
返回可以是:
scalar : 当使用单个函数调用 Series.agg 时
Series : 当 DataFrame.agg 被调用时使用单个函数
DataFrame : 当使用多个函数调用 DataFrame.agg 时
参见
DataFrame.groupby.aggregate
使用可调用对象、字符串、字典或字符串/可调用对象列表进行聚合。
DataFrame.resample.transform
基于给定的函数转换每个组中的Series。
DataFrame.aggregate
在指定轴上使用一个或多个操作进行聚合。
备注
聚合操作总是在一个轴上执行,要么是索引(默认)要么是列轴。这种行为与 numpy 聚合函数(mean, median, prod, sum, std, var)不同,后者的默认行为是计算展平数组的聚合,例如
numpy.mean(arr_2d)
而不是numpy.mean(arr_2d, axis=0)
。agg 是 aggregate 的别名。使用这个别名。
修改传递对象的函数可能会产生意外行为或错误,并且不受支持。更多详情请参见 使用用户定义函数 (UDF) 方法进行变异。
传递的用户定义函数将传递一个 Series 进行评估。
如果
func
定义了一个索引重标记,axis
必须是0
或index
。例子
>>> s = pd.Series([1, 2, 3, 4, 5], ... index=pd.date_range('20130101', periods=5, freq='s')) >>> s 2013-01-01 00:00:00 1 2013-01-01 00:00:01 2 2013-01-01 00:00:02 3 2013-01-01 00:00:03 4 2013-01-01 00:00:04 5 Freq: s, dtype: int64
>>> r = s.resample('2s')
>>> r.agg("sum") 2013-01-01 00:00:00 3 2013-01-01 00:00:02 7 2013-01-01 00:00:04 5 Freq: 2s, dtype: int64
>>> r.agg(['sum', 'mean', 'max']) sum mean max 2013-01-01 00:00:00 3 1.5 2 2013-01-01 00:00:02 7 3.5 4 2013-01-01 00:00:04 5 5.0 5
>>> r.agg({'result': lambda x: x.mean() / x.std(), ... 'total': "sum"}) result total 2013-01-01 00:00:00 2.121320 3 2013-01-01 00:00:02 4.949747 7 2013-01-01 00:00:04 NaN 5
>>> r.agg(average="mean", total="sum") average total 2013-01-01 00:00:00 1.5 3 2013-01-01 00:00:02 3.5 7 2013-01-01 00:00:04 5.0 5