用法:
Series.map_overlap(func, before, after, *args, **kwargs)
对每个分区应用一个函数,与相邻分区共享行。
这对于实现诸如
df.rolling(...).mean()
或df.diff()
之类的窗口函数很有用。- func:函数
应用于每个分区的函数。
- before:int
从分区
i - 1
的末尾添加到分区i
的行数。- after:int
从分区
i + 1
的开头追加到分区i
的行数。- args, kwargs:
要传递给函数的参数和关键字。分区将是第一个参数,这些将在之后传递。
- meta:pd.DataFrame、pd.Series、dict、可迭代、元组、可选
与输出的 dtypes 和列名匹配的空
pd.DataFrame
或pd.Series
。此元数据对于 dask 数据帧中的许多算法起作用是必需的。为了便于使用,还提供了一些替代输入。可以提供{name: dtype}
的dict
或(name, dtype)
的可迭代对象,而不是DataFrame
(请注意,名称的顺序应与列的顺序匹配)。可以使用(name, dtype)
的元组代替系列。如果未提供,dask 将尝试推断元数据。这可能会导致意外结果,因此建议提供meta
。有关详细信息,请参阅dask.dataframe.utils.make_meta
。
参数:
注意:
给定正整数
before
和after
,函数func
,map_overlap
执行以下操作:将
before
行从分区i - 1
的末尾添加到每个分区i
。第一个分区没有前置行。从分区
i + 1
的开头将after
行附加到每个分区i
。最后一个分区没有附加行。将
func
应用到每个分区,如果提供的话,传入任何额外的args
和kwargs
。从除第一个分区之外的所有分区的开头修剪
before
行。从除最后一个分区之外的所有分区的末尾修剪
after
行。
请注意,假设索引和部门保持不变。
例子:
给定一个 DataFrame、Series 或 Index,例如:
>>> import pandas as pd >>> import dask.dataframe as dd >>> df = pd.DataFrame({'x': [1, 2, 4, 7, 11], ... 'y': [1., 2., 3., 4., 5.]}) >>> ddf = dd.from_pandas(df, npartitions=2)
可以通过在每个分区之前重叠 2 行,然后将调用映射到
df.rolling(2).sum()
来计算具有大小为 2 的尾随移动窗口的滚动和:>>> ddf.compute() x y 0 1 1.0 1 2 2.0 2 4 3.0 3 7 4.0 4 11 5.0 >>> ddf.map_overlap(lambda df: df.rolling(2).sum(), 2, 0).compute() x y 0 NaN NaN 1 3.0 3.0 2 6.0 5.0 3 11.0 7.0 4 18.0 9.0
pandas
diff
方法计算偏移多个周期(可以是正数或负数)的离散差。这可以通过在附加/附加那么多行之后将调用df.diff
映射到每个分区来实现,具体取决于符号:>>> def diff(df, periods=1): ... before, after = (periods, 0) if periods > 0 else (0, -periods) ... return df.map_overlap(lambda df, periods=1: df.diff(periods), ... periods, 0, periods=periods) >>> diff(ddf, 1).compute() x y 0 NaN NaN 1 1.0 1.0 2 2.0 1.0 3 3.0 1.0 4 4.0 1.0
如果您有
DatetimeIndex
,则可以将pd.Timedelta
用于基于时间的窗口。>>> ts = pd.Series(range(10), index=pd.date_range('2017', periods=10)) >>> dts = dd.from_pandas(ts, npartitions=2) >>> dts.map_overlap(lambda df: df.rolling('2D').sum(), ... pd.Timedelta('2D'), 0).compute() 2017-01-01 0.0 2017-01-02 1.0 2017-01-03 3.0 2017-01-04 5.0 2017-01-05 7.0 2017-01-06 9.0 2017-01-07 11.0 2017-01-08 13.0 2017-01-09 15.0 2017-01-10 17.0 Freq: D, dtype: float64
相关用法
- Python dask.dataframe.Series.map_partitions用法及代码示例
- Python dask.dataframe.Series.map用法及代码示例
- Python dask.dataframe.Series.max用法及代码示例
- Python dask.dataframe.Series.mask用法及代码示例
- Python dask.dataframe.Series.mod用法及代码示例
- Python dask.dataframe.Series.min用法及代码示例
- Python dask.dataframe.Series.mul用法及代码示例
- Python dask.dataframe.Series.memory_usage用法及代码示例
- Python dask.dataframe.Series.apply用法及代码示例
- Python dask.dataframe.Series.clip用法及代码示例
- Python dask.dataframe.Series.prod用法及代码示例
- Python dask.dataframe.Series.fillna用法及代码示例
- Python dask.dataframe.Series.to_frame用法及代码示例
- Python dask.dataframe.Series.sum用法及代码示例
- Python dask.dataframe.Series.dropna用法及代码示例
- Python dask.dataframe.Series.gt用法及代码示例
- Python dask.dataframe.Series.ge用法及代码示例
- Python dask.dataframe.Series.repartition用法及代码示例
- Python dask.dataframe.Series.count用法及代码示例
- Python dask.dataframe.Series.append用法及代码示例
注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.dataframe.Series.map_overlap。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。