我想知道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行)
非常感谢提前
答案 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