使用Panda read_csv函数仅加载行列表 - Python

时间:2016-08-24 12:40:58

标签: python csv pandas

我想知道pandas.read_csv函数是否有一个选项允许我只加载原始csv文件中的某个行列表。

csv文件非常大,由于内存不足,我无法加载整个文件 有没有像:

这样的选项
df = pandas.read_csv(file, <b>'read_only'</b> = list_to_read) ?

list_to_read = [0,2,10]为例(这只会读取第0行,第2行和第10行)

非常感谢提前

2 个答案:

答案 0 :(得分:2)

如果您查看$(function () { if ($("a.navigationLink").length) { $("a.navigationLink").eq(0).trigger( "click" ); } }); 的{​​{3}},则会找到read_csv kwarg:

  

nrows:int,默认无   要读取的文件行数。用于阅读大型文件

但是请注意,这将从文件中读取nrows第一行,而不是任意行(即不能提供它n并期望它阅读第一,第三和第十一行)

答案 1 :(得分:0)

您可能希望在读取文件时迭代更新数据帧。这不是一个快速的过程,但它只会将感兴趣的行放入数据帧而不将整个文件拉入内存。

import pandas as pd

col_list = ['columnA', 'columnB', ... ]  #fill in your data columns
row_list = [0, 3, 10, ... ]
df = pd.DataFrame(columns=col_list)
row_number = 0

with open('path/to/file', 'rb') as fp:
    for i, line in enumerate(fp.xreadlines()):
        if i in row_list:
            data_line = map(float, line.strip().split(','))  #assumes all columns are floats
            df.loc[row_number] = data_line
            row_number += 1