我需要处理一个大文件并更改一些值。
我想做这样的事情:
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/