Dask DataFrame 的逐行处理

Cae*_*nog 5 python pandas dask

我需要处理一个大文件并更改一些值。

我想做这样的事情:

for index, row in dataFrame.iterrows():

        foo = doSomeStuffWith(row)
        lol = doOtherStuffWith(row)

        dataFrame['colx'][index] = foo
        dataFrame['coly'][index] = lol
Run Code Online (Sandbox Code Playgroud)

对我不好,我不能做 dataFrame['colx'][index] = foo

我的行数很大,我需要处理大量的列。因此,如果我为每一列执行一个 dataFrame.apply(...) ,我担心 dask 可能会多次读取文件。

其他解决方案是手动将我的数据分成块并使用 Pandas 或将任何内容放入数据库中。但是,如果我可以继续使用我的 .csv 并让 dask 为我进行块处理,那就太好了!

感谢您的帮助。

MRo*_*lin 4

一般来说,迭代数据帧(无论是 Pandas 还是 Dask)可能会非常慢。此外,Dask 不支持按行插入元素。这种工作量很难扩展。

相反,我建议使用 dd.Series.where (请参阅此答案)或在函数中进行迭代(在制作副本之后以免就地操作),然后使用 map_partitions 在所有 Pandas 数据帧中调用该函数你的 Dask 数据框。