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

我想做这样的事情:

for index, row in dataFrame.iterrows():

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

        dataFrame['colx'][index] = foo
        dataFrame['coly'][index] = lol

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

我的行数非常大,我需要处理大量的列。因此,如果对每一列执行一个dataFrame.apply(...),恐怕dask可能会多次读取该文件。

其他解决方案是将我的数据手动分解为大块并使用 Pandas ,或者只是将任何东西扔到数据库中。但是,如果我可以继续使用.csv并让dask为我完成数据块处理,那就太好了!

谢谢您帮忙。

最佳答案

通常,对数据帧(Pandas或Dask)进行迭代可能会非常慢。另外,Dask将不支持按行元素插入。这种工作量很难扩展。

相反,我建议使用dd.Series.where(请参阅this answer),或者在函数中进行迭代(在复制后以免原地操作),然后使用map_partitions在您的所有Pandas数据帧中调用该函数Dask数据框。

关于python - Dask DataFrame的逐行处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42861234/

10-14 05:10