首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python内存问题,刷新,csv大小

python内存问题,刷新,csv大小
EN

Stack Overflow用户
提问于 2018-11-14 14:17:44
回答 2查看 109关注 0票数 0

在解决了数据集的排序之后,我在代码的这一点上遇到了一个问题。

代码语言:javascript
复制
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])

我在线路上有个问题。在这一行中,数据有时是巨大的,我得到了一个致命的错误。

有什么简短的/好的方法来重写这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-14 14:24:02

相反,使用readline,它一次只读取一行,而不将整个文件加载到内存中。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-11-14 14:41:07

如果您正在处理一个数据集,我建议您查看一下熊猫,我很适合处理数据争用。

如果您的问题是一个大的数据集,您可以加载数据块。

代码语言:javascript
复制
import pandas as pd
tfr = pd.read_csv('fns_land{0}.csv'.format(xx), iterator=True, chunksize=1000)
  1. 线:进口熊猫模组
  2. 行:从csv文件中读取1000行块的数据。

这将是pandas.io.parsers.TextFileReader类型。要加载整个csv文件,您可以跟踪以下内容:

代码语言:javascript
复制
df = pd.concat(tfr, ignore_index=True)

为了避免索引的重复,添加了参数ignore_index=True。

现在,您已经将所有数据加载到一个dataframe中。然后,以向量的形式对列进行数据操作,这也比常规的逐行操作更快。

看看这个问题,它处理的是类似的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53302313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档