繁体   English   中英

从列表中创建 pandas 系列会占用内存

[英]Creating pandas series from a list eats up ram

我正在从 txt 文件中读取数字列表作为字符串。 它不是一个大文件,只有 1 GB。 然后将数字转换为浮点数并放入列表中。

with open(...) as f:
    lines = f.read()
mylist = [float(x) for x in lines if x not in ['[',']',',', ' ']]

我列表的最后内容只是 1.0 格式的简单浮点数。 但是,这会占用大量内存。 我注意到如果我将它们转换为 int 它们不会占用太多空间,但我需要它们是浮动的。

然后,当我尝试将其转换为 pandas 系列时,我的整个 session 崩溃了。

mylist = pd.Series(mylist)

我正在使用带有大约 25 GB 内存和 15 GB GPU 的 google colab。 我不敢相信只有 1 GB 的数据可以吃掉 25 GB 的内存,我一定是做错了什么,但我不知道该怎么办。 任何帮助表示赞赏。

您是否尝试使用标准方法(使用自定义分隔符)打开此文件?

import pandas as pd
df  = pd.read_csv('you_file.txt', delimiter='\t')
df = df[(df['some_column'] != '[') & (df['some_column'] != ']')]
df = df[(df['some_column'] != ',') & (df['some_column'] != ' ')]

UPD :也许您可以尝试使用 python 生成器,当我们关心 RAM 时,它是一个很棒的工具。

def open_file():
    for row in open(file_name, "r"):
        yield row
lines = open_file()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM