在解决了数据集的排序之后,我在代码的这一点上遇到了一个问题。
with open(fns_land[xx]) as infile:
lines = infile.readlines()
for line in lines:
result_station.append(line.split(',')[0])
result_date.append(line.split(',')[1])
result_metar.append(line.split(',')[-1])我在线路上有个问题。在这一行中,数据有时是巨大的,我得到了一个致命的错误。
有什么简短的/好的方法来重写这一点吗?
发布于 2018-11-14 14:24:02
相反,使用readline,它一次只读取一行,而不将整个文件加载到内存中。
with open(fns_land[xx]) as infile:
while True:
line = infile.readline()
if not line:
break
result_station.append(line.split(',')[0])
result_date.append(line.split(',')[1])
result_metar.append(line.split(',')[-1])发布于 2018-11-14 14:41:07
如果您正在处理一个数据集,我建议您查看一下熊猫,我很适合处理数据争用。
如果您的问题是一个大的数据集,您可以加载数据块。
import pandas as pd
tfr = pd.read_csv('fns_land{0}.csv'.format(xx), iterator=True, chunksize=1000)这将是pandas.io.parsers.TextFileReader类型。要加载整个csv文件,您可以跟踪以下内容:
df = pd.concat(tfr, ignore_index=True)为了避免索引的重复,添加了参数ignore_index=True。
现在,您已经将所有数据加载到一个dataframe中。然后,以向量的形式对列进行数据操作,这也比常规的逐行操作更快。
看看这个问题,它处理的是类似的东西。
https://stackoverflow.com/questions/53302313
复制相似问题