读取pandas数据框时,跳过包含特定值的特定行

时间:2016-11-17 05:41:10

标签: python csv pandas dataframe

当您使用命令pd.read_csv读取csv时, 如何跳过连续包含特定值的行? 如果在第50行,第55行,第1列的值为100,所以我想在读取csv文件时跳过这些行。 我如何将这些命令放在pd.read_csv('read.csv')这样的读入命令中? 该值的总长度为300.

2 个答案:

答案 0 :(得分:2)

稍后放弃它们而不读它们有什么区别?你可能只是这样做:

pd.read_csv('file.csv').query('col1 != 100')

答案 1 :(得分:1)

唯一的方法是预解析文件。使用生成器读取文件,然后只使用yield所需的行。然后,您可以使用它将所需的行读入StringIO对象,并将该对象传递到文件路径的read_csv

import StringIO
import pandas as pd

def read_file(file_name):
    with open(file_name, 'r') as fh:
        for line in fh.readlines():
            parts = line.split(',')
            if parts[0] != '100':
                yield line

stream = StringIO.StringIO()
stream.writelines(read_file('foo.txt'))
stream.seek(0)

df = pd.read_csv(stream)