[英]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.