【发布时间】:2021-12-10 19:39:36
【问题描述】:
我有一个 pandas dataframe,每行包含大量文本,转换为 .pkl 时占用 1.6GB 空间。现在我想从这个数据框中列出一个单词列表,我认为像[word for text in df.text for word in i.split()] 这样简单的东西就足够了,但是,这个表达式在 10 秒内吃掉了所有 16GB 的内存,仅此而已。它的工作原理对我来说真的很有趣,为什么它不超过 1.6GB?我知道列表分配了更多内存以便能够扩展,所以我尝试了元组 - 结果相同。我什至尝试将所有内容作为元组('one', 'two', 'three') 写入文件,然后打开文件并执行eval - 结果仍然相同。为什么会这样? pandas 是压缩数据还是 python 效率低下?有什么更好的方法?
【问题讨论】:
-
for word in i.split()在 Python 中制作许多小字符串是非常低效的,因为字符串的开销很大。请注意,带有dtype=object的 pandas 数据帧应该占用几乎相同数量的内存来保存 相同的字符串作为相应的列表
标签: python python-3.x pandas list memory