我目前有一个200k行的csv文件,每行包括80个条目,用逗号分隔。我尝试用open()打开csv文件并将数据追加到2-D python列表中。当我尝试遍历该列表并将80个条目添加到单个列表中时,计算机会冻结。我的代码是否会产生某种内存问题?我应该分批处理数据吗?还是有更有效的方法来解决我想要做的事情?如何在python中遍历大型CSV文件时轻松实现内存?
简而言之:打开csv,经过200k条目并将它们从[1,2,3,4,5,...,80],[1,...,80],.. .. 200k - > [12345 ... 80]。 [1 ... 80],200K
import csv
# create empty shells
raw_data = []
concatenate_data = []
def get_data():
counter = 1
# open the raw data file and put it into a list
with open('raw_data_train.csv', 'r') as file:
reader = csv.reader(file, dialect='excel')
for row in reader:
print('\rCurrent item: {0}'.format(counter), end='', flush=True)
raw_data.append(row)
counter += 1
print('\nReading done')
def format_data():
counter = 1
temp = ''
# concatenate the separated letters for each string in the csv file
for batch in raw_data:
for letters in batch:
temp += letters
concatenate_data.append(temp)
print('\rCurrent item: {0}'.format(counter), end='', flush=True)
counter += 1
print('\nTransforming done')
print(concatenate_data[0:10])
是正常的'temp'只在启动时进行更快的使用
str.join
避免字符串连接呢? –@ Jean-FrançoisFabre你是什么意思?我只需要暂时使用这个变量来保存80个单个条目并将它们转换为单个条目。这就是为什么它只包含在格式数据函数中。 – d3x