首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在生成器函数的定义中运行带有‘’分隔符‘’的"pandas.read_csv“?

如何在生成器函数的定义中运行带有‘’分隔符‘’的"pandas.read_csv“?
EN

Stack Overflow用户
提问于 2019-05-18 19:59:49
回答 1查看 774关注 0票数 1

CSV文件很大(几GB),所以我想要一步一步地对行进行切片,并使用pivot修改每个切片的DataFrames,然后组合DataFrames

我使用了一个生成器函数来按行划分数据,但我无法使用pandas.read_csv中的'delimeter'参数,如下所示。

代码语言:javascript
运行
复制
import pandas as pd

def generator():
  for x in range(0,366130,11):
    yield pd.read_csv(filename, nrows = x, delimeter='\x01', header=None)

g = generator()
df = next(g)

df

当我运行这段代码时,我在ipython中得到了以下错误:

代码语言:javascript
运行
复制
TypeError: Traceback (most recent call last)
<ipython-input-76-7e0eb8a3d8b6> in <module>
----> 1 df1 = next(g)
      2 df1

<ipython-input-75-fae533ab2013> in generator()
      2 #      print("homework_1_1")
      3     for x in range(0,366130,11):
----> 4       yield pd.read_csv(filename, nrows = x, delimeter='\x01', header=None)
      5 
      6 g = generator()

TypeError: parser_f() got an unexpected keyword argument 'delimeter'

我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2019-05-18 20:18:11

只需将文件分成块即可

http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

与其一次在内存中获取整个数据集,不如将其分成块

代码语言:javascript
运行
复制
chunksize = 10 ** 6
for chunk in pd.read_csv(filename, chunksize=chunksize):
    process(chunk)

你也可以使用Dask库

https://pythondata.com/dask-large-csv-python/

代码语言:javascript
运行
复制
import dask.dataframe as dd

filename = '311_Service_Requests.csv'
df = dd.read_csv(filename, dtype='str')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56198717

复制
相关文章

相似问题

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