【问题标题】:How to Convert Dask DataFrame Into List of Dictionaries?如何将 Dask DataFrame 转换为字典列表?
【发布时间】:2020-04-08 15:51:14
【问题描述】:
我需要将 dask 数据帧转换为字典列表作为 API 端点的响应。我知道我可以将 dask 数据帧转换为 pandas,然后从那里我可以转换为字典,但最好将每个分区映射到一个字典,然后连接。
我尝试了什么:
df = dd.read_csv(path, usecols=cols)
dd.compute(df.to_dict(orient='records'))
我得到的错误:
AttributeError: 'DataFrame' object has no attribute 'to_dict'
【问题讨论】:
标签:
python
pandas
dictionary
parallel-processing
dask
【解决方案1】:
你可以这样做
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 模块开始。
【解决方案2】:
试试这个:
data=list(df.map_partitions(lambda x:x.to_dict(orient="records")))
它将返回一个字典列表,其中每一行都将转换为字典。