更新 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
根据文档,建议使用前者。
更多信息:
我是 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
根据文档,建议使用前者。
更多信息: