【问题标题】:Very Big CSV File - How to Read Only Certain Rows into Data Frame非常大的 CSV 文件 - 如何仅将某些行读取到数据框中
【发布时间】:2020-07-16 07:35:31
【问题描述】:

我有一个非常大的 csv 文件,我无法使用 pandas read_csv 加载到我的计算机内存中。

我看dask.dataframe as dd

我需要使用 dask 从该 csv 文件中仅读取某些列的某些行并将其存储为 panda 数据框。

例如:

User  ProductA  ProductB
A     1         2
B     2         3
C     3         1

如何使用 dask 仅读取用户 C 的行和 ProductA 列?

需要输出为数据框:

User  ProductA
C     3

【问题讨论】:

  • 你能显示原始的 csv 吗?
  • @anon01 它有 3200 万行和 25 列

标签: python pandas csv machine-learning dask


【解决方案1】:

您可以使用dask.dataframeread_csv 函数,过滤然后将您的df 转换为pandas 数据框:

import dask.dataframe as dd
import pandas as pd

path2file = "yourpath.csv"
cols = ["User", "ProductA"]
# Be careful about the sep (check if it is ; or something else and add it to the
# function below as parameter if so
dataset = dd.read_csv(path2file, usecols=cols)
# Filter 
dataset = dataset.loc[dataset["User"]=="C"]), :]
dataset = dataset.compute()

【讨论】:

  • 很好,这也有效。我最初的技巧是用 pandas 将大文件简单地读入较小的 csv 文件块,然后使用这些较小的块来提取用户
  • 代码已损坏,无法编辑队列已满的操作。删除倒数第二行最后5个字符修复代码:dataset = dataset.loc[dataset["User"]=="C"]
猜你喜欢
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
  • 2019-06-04
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多