2016-11-17 72 views
-1

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

+0

什么是价值的长度? – jezrael

+1

以后放弃它们,而不是根本不读它们有什么区别?你可以简单地做:'pd.read_csv('file.csv')。query('col1!= 100')'... – Kartik

+0

^^^^^^^^^^那! @卡蒂克,为什么不是一个答案? – piRSquared

回答

2

之后放下它们,而不是读它们之间有什么区别?你可以简单地做:

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

其实没有什么区别!谢谢!有效! – MMM

0

唯一的方法是预解析该文件。使用发生器读取文件,然后只需要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) 
相关问题