python - 如何在生成器函数的定义中使用“分隔符”运行“pandas.read_csv”?
问题描述
CSV 文件大小如此之大(几 GB),所以我想逐步对行进行切片DataFrames
并使用枢轴修改每个切片,然后将DataFrames
.
我使用生成器函数按行对数据进行切片,但我无法陷入如下'delimeter'
参数中pandas.read_csv
。
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 中收到以下错误:
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'
我怎样才能解决这个问题?
解决方案
只需将文件分成块
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)
或者
你也可以使用 Dask Library
https://pythondata.com/dask-large-csv-python/
import dask.dataframe as dd
filename = '311_Service_Requests.csv'
df = dd.read_csv(filename, dtype='str')
推荐阅读
- javascript - Javascript比较数字给出错误答案
- c# - WPF单击ContextMenu时获取ListView项目的名称
- scala - 在宏扩展之前调用隐式
- typescript - 如何将类型绑定添加到 graphql 解析器映射
- postgresql - PostgreSQL JSONB 数组行必须存在于传入数组中
- c - 快速排序浮动最终只显示 0,00
- redis - bgsave 是否在某人已将密钥写入 RDB 文件后保存更改?
- python - 一维 Ising 模型图和配置
- azure-devops - 可以添加到发布管道以从密钥保管库中获取变量的 Powershell 脚本
- python - Micropython获取正确的当前时间