高效的内存方式将Pandas系列字符串列表转换为稀疏DataFrame

我想优化一个函数,该函数将用大文本字符串填充的Series作为参数,然后返回一个DataFrame,其中每个列均由来自传入文本的单词填充。这就是我要做的事情:

假设输入系列是X:

X.str.split()\
.apply(pd.Series)

这可行,但是对于大型数据集需要大量内存。也是在我意识到整个数据集可能无法像密集的DataFrame那样完全装入内存时。所以,我尝试了这个:

Y = X.str.split()
U = list(map(lambda x: pd.SparseArray(x),Y.to_list(x)))
Z = pd.DataFrame(U)

我不使用pd.SparseDataFrame,因为它已被弃用,并且当我将其传递给代码中的其他函数时它也不起作用。

现在这种尝试的问题是Z的行处理时间太长,可能是因为我没有正确实现它。因此,我的问题是,如何以一种不会永久使用的方式进行这项工作?我也尝试过玩耍,但我对它太陌生了,无法提出一些不错的东西。

修改

我设法使用dask通过以下操作在两台计算机之间分配计算:

import dask.dataframe as dd
from dask.distributed import Client

client = Client("address")

max_cols = D.str.count(" ").max().compute()+1
X = client.scatter(X)
S = client.submit(lambda x: x.str.split(n=max_cols,expand=True),X)

这可以最终解决内存问题,因为我可以通过“群集”设置来限制它,但是现在仅使用一个核心,即使其中有16个可用。我该如何解决?

mei96818968 回答:高效的内存方式将Pandas系列字符串列表转换为稀疏DataFrame

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3165384.html

大家都在问