从列表中创建熊猫系列会吃掉公羊



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

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

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

然后,当我试图将其转换为熊猫系列时,我的整个会话都崩溃了。

mylist = pd.Series(mylist)

我使用的谷歌colab大约有25 GB的内存和15 GB的GPU。我不敢相信只有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()

最新更新