在应用程序上使用dask返回几列(a dataframe so)



我正在尝试在应用程序上使用dask,并带有输出5个浮子的函数。我将在此处简化。

def func1(row, param):
    return float(row.Val1) * param, float(row.Val1) * np.power(param, 2)
data = pd.DataFrame(np.array([["A01", 12], ["A02", 24], ["A03", 13]]), columns=["ID", "Val1"])
data2 = dd.from_pandas(data, npartitions=2).map_partitions(lambda df: df.apply(lambda row: func1(row, 2), axis=1, result_type="expand"), meta=pd.DataFrame()).compute(scheduler=get)

如果我不放置元,我会收到此错误消息:

ValueError: Metadata inference failed in `lambda`.
You have supplied a custom function and Dask is unable to 
determine the type of output that that function returns. 
To resolve this please provide a meta= keyword.
The docstring of the Dask function you ran should have more information.
Original error is below:
------------------------
ValueError("could not convert string to float: 'foo'", 'occurred at index 0')

如果我放了一个元(虽然不是合适的...),我会得到这个:

ValueError: The columns in the computed data do not match the columns in the provided metadata

有人可以帮忙吗?:)

您提供的空数据框架没有正确的列名。您没有在元数据中提供任何列,但是您的输出确实具有它们。这是您错误的根源。

元值应匹配您预期输出的列名和dtypes。

最新更新