更新dask的数据框

时间:2018-07-10 10:07:04

标签: python-3.x dataframe dask

我是新手,所以您能帮我吗? 我有一个这样的csv文件:

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

我以某种方式设法获得了一个令人迷惑的数据框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而产生并行性。

有什么可以建议我做的吗?预先谢谢你。

1 个答案:

答案 0 :(得分:1)

您可以使用多重处理(从而避免使用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