更新 dask 的数据框

Update of dask's dataframe

我是 dask 的新手,你能帮帮我吗? 我有一个这样的 csv 文件:

id,popularity,hashtag,seen
0,100,#footbal,0
1,200,#2017,0
2,300,#1,0

不知何故我设法得到了一个 dask 数据帧 hashtags_to_update:

id  seen
0   118
2   136

我想将来自 hashtags_to_update 的数据与来自 csv 文件的数据合并以获得:

id,popularity,hashtag,seen
0,100,#footbal,118
1,200,#2017,0
2,300,#1,136

现在我正在做以下事情

hashtags_df = dd.read_csv('path/to/csv/file').set_index('id')
hashtags_df["seen"] = hashtags_df["seen"].add(hashtags_to_update["seen"], fill_value=0).astype('int64')
hashtags_df.compute().to_csv('output.csv', sep=',')

但据我所知,当数据包含被转换为 python 的对象的字符串时会出现一些问题,因此不会因为 GIL 而存在并行性。

有什么可以建议我做的吗?提前谢谢你。

您可以使用多处理(从而避免 GIL)。

有几种方法:

设置客户端(默认情况下它将确保多处理):

from dask.distributed import Client
client = Client()

import dask.multiprocessing
dask.config.set(scheduler='processes')  # overwrite default with multiprocessing scheduler 

根据文档,建议使用前者。

更多信息:

Client

dask.config.set