dask.dataframe.Series.apply
dask.dataframe.Series.apply¶
- Series.apply(func, convert_dtype=_NoDefault.no_default, meta=_NoDefault.no_default, args=(), **kwds)[源代码]¶
pandas.Series.apply 的并行版本
- 参数
- 函数函数
要应用的函数
- convert_dtype布尔值,默认值为 True
尝试为逐元素函数结果找到更好的数据类型。如果为 False,则保留为 dtype=object。
- metapd.DataFrame, pd.Series, dict, iterable, tuple, optional
一个空的
pd.DataFrame
或pd.Series
,其数据类型和列名与输出匹配。此元数据对于 dask dataframe 中的许多算法正常工作是必要的。为了便于使用,还提供了一些替代输入。除了DataFrame
之外,还可以提供{name: dtype}
的字典或(name, dtype)
的可迭代对象(注意名称的顺序应与列的顺序匹配)。除了系列之外,还可以使用(name, dtype)
的元组。如果未提供,dask 将尝试推断元数据。这可能会导致意外结果,因此建议提供meta
。有关更多信息,请参阅dask.dataframe.utils.make_meta
。- 参数元组
除了值之外,传递给函数的定位参数。
- 额外的关键字参数将被作为关键字传递给函数。
- 返回
- 应用如果 func 返回一个 Series,则为 Series 或 DataFrame。
参见
dask.Series.map_partitions
示例
>>> import dask.dataframe as dd >>> s = pd.Series(range(5), name='x') >>> ds = dd.from_pandas(s, npartitions=2)
在 Series 上逐元素应用一个函数,在
args
和kwargs
中传递额外参数:>>> def myadd(x, a, b=1): ... return x + a + b >>> res = ds.apply(myadd, args=(2,), b=1.5)
默认情况下,dask 会尝试通过在某些假数据上运行您提供的函数来推断输出元数据。这在许多情况下效果很好,但有时可能会很昂贵,甚至失败。为了避免这种情况,您可以使用
meta
关键字手动指定输出元数据。这可以通过多种形式指定,更多信息请参见dask.dataframe.utils.make_meta
。这里我们指定输出是一个名为
'x'
的 Series,并且 dtype 为float64
:>>> res = ds.apply(myadd, args=(2,), b=1.5, meta=('x', 'f8'))
在元数据不变的情况下,您也可以直接传入对象本身:
>>> res = ds.apply(lambda x: x + 1, meta=ds)