繁体   English   中英

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

[英]Loading only a list of rows using Panda read_csv function - Python

我想知道是否有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)

提前谢谢了

如果read_csv文档 ,您会发现nrows kwarg:

nrows:int,默认值无要读取的文件行数。 对于读取大文件很有用

但是请注意,这将从文件中读取前n行,而不是任意行(即,您无法提供它[0, 2, 10]并期望它读取第一,第三和第十一行)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM