2016-11-17 45 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) 
相關問題