首页 > 解决方案 > 字典到 dask 数据框

问题描述

我有一个字典列表delayed。每个delayed对象的计算值必须变成dask.Dataframe.

dfs = []

for source_list in list_of_list:
    values1 = {}
    values2 = {}

    for source in source_list:
        intermediate = dask.delayed(myfunc)(source)

        source_name = string_manipulation(source)
        values1[source_name] = dask.delayed(myfunc1)(intermediate)
        values2[source_name] = dask.delayed(myfunc2)(intermediate)

    df1 = dd.from_delayed(values1)  # TypeError: Expected Delayed object, got str
    df2 = dd.from_delayed(values2)
    df = dd.concat(df1, df2)
    df = df.T  # transpose function for dd?
    dfs.append(df)

dfs = dd.concat(dfs)
dfs = dfs.compute()

通常pandas.DataFrame将字典的键转换为列。这如何实现dask.DataFrame?也许有更有效的方法。

我很欣赏你的评论。

标签: pythonpandasdataframedask

解决方案


dd.from_delayed 需要一个延迟对象列表,每个对象都返回一个 pandas 数据帧。您正在提供延迟对象的字典,因此会出现错误。

您需要创建一个延迟对象列表,每个对象在计算时都会生成一个 pandas 数据帧。所有这些 pandas 数据框都应该具有相同的列和类型。


推荐阅读