繁体   English   中英

如何在行上对 dask.Series 中的 dask.Dataframe 进行乘法运算?

[英]How to make a multiplication of a dask.Dataframe from dask.Series over rows?

normalised = data.mul(alpha, axis=1)

在上面的代码片段中, data是一个 dask.Dataframe,而alpha是一个 dask.Series。

Dask 在执行此乘法时引发ValueError: Unable to mul dd.Series with axis=1 error。 如果我计算 alpha(例如 alpha.compute() ),则此操作有效,但由于 alpha 是一项大任务,我想避免在代码的这个阶段调用计算。

任何人都可以提出更好的解决方案来执行此操作吗?

一个可重现的例子如下:

import pandas as pd
import dask.dataframe as dd

df = pd.DataFrame(
    [[1, 2, 3], 
     [1, 2, 3.5], 
     [1, 2, 3.7]], 
    columns = ["A", "B", "C"]
)

ddf = dd.from_pandas(df, npartitions=1)

dv = df.iloc[0]
series = dd.from_pandas(dv, npartitions=1)

ddf.mul(series, axis=1)

该操作可以使用.map_partitions()执行。 假设 series.index == ddf.columns 那么:

in_pandas = df.mul(dv, axis=1)
in_dask = ddf.map_partitions(pd.DataFrame.mul, other=series, axis=1, meta=ddf._meta)

import pandas.testing as pdt
pdt.assert_frame_equal(in_pandas, in_dask.compute())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM