如何在生成器函数的定义内使用“测距计”运行“ pandas.read_csv”?

时间:2019-05-18 11:59:49

标签: python python-3.x ipython

CSV文件太大(几个GB),所以我想逐步地对行进行切片,并用数据透视表修改每个切片的DataFrames,然后组合DataFrames

我使用生成器函数按行对数据进行切片,但无法陷入如下情况的'delimeter'的{​​{1}}参数中。

pandas.read_csv

运行此代码时,在ipython中出现以下错误:

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

我该如何解决?

1 个答案:

答案 0 :(得分:0)

只需将文件分成几块

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

与其将所有数据集全部一次存储在内存中,不如将其分成多个块

chunksize = 10 ** 6
for chunk in pd.read_csv(filename, chunksize=chunksize):
    process(chunk)

OR

您还可以使用Dask库

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

import dask.dataframe as dd

filename = '311_Service_Requests.csv'
df = dd.read_csv(filename, dtype='str')