如何将Dask DataFrame转换成字典列表?

时间:2020-04-08 15:51:14

标签: python pandas dictionary parallel-processing dask

我需要将dask数据框转换为字典列表,以作为API端点的响应。我知道我可以将dask数据帧转换为pandas,然后从那里可以转换为Dictionary,但是最好将每个分区映射到dict,然后进行连接。

我尝试过的事情:

df = dd.read_csv(path, usecols=cols)

dd.compute(df.to_dict(orient='records'))

我得到的错误:

AttributeError: 'DataFrame' object has no attribute 'to_dict'

2 个答案:

答案 0 :(得分:2)

您可以按照以下步骤进行操作

import dask.bag as db
db.from_delayed(df.map_partitions(pd.DataFrame.to_dict, orient='records'
    ).to_delayed())

为您提供一个bag,您可以进行计算(如果它适合内存)或进行其他操作。

请注意,to_delayed / from_delayed不必要,但也有一个to_bag方法,但这似乎并没有做正确的事。

此外,您在这里的dataframe模型中并没有真正的收获,您可能想从db.read_text和内置的CSV模块开始。

答案 1 :(得分:0)

试试这个:

data=list(df.map_partitions(lambda x:x.to_dict(orient="records")))

它将返回一个字典列表,其中每一行都将被转换为字典。