解决了数据集的排序问题之后,我的代码在这一点上遇到了问题。
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])
我在线路行中有问题。在这一行中,数据有时会非常庞大,我会遇到致命错误。
是否有简短的方法来重写这一点?
答案 0 :(得分:1)
改为使用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])
答案 1 :(得分:1)
如果要处理数据集,建议您看看pandas,它非常适合处理数据整理。
如果您的问题是大型数据集,则可以分块加载数据。
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 以避免重复索引。
现在,您已将所有数据加载到数据框中。然后将列作为矢量进行数据处理,这也比常规的逐行处理要快。
在这里查看这个处理类似问题的question。