2017-09-13 205 views
1

我試圖使用python-大熊貓來過濾特定的行:Python的大熊貓篩選

df = pd.read_csv('file.csv', delimiter=',', header=None,engine='python', usecols=range(0, 7), error_bad_lines=False) 

df = df.drop(df.index[9:86579]) 

df = df[df[[0,1]].apply(lambda r: r.str.contains('TestString1', case=False).any(), axis=1)] 

df.to_csv("yourcsv.csv", index=False, header=None)# 

現在,我怎麼設置一個起始行?因爲我的行「0-10」包含信息,我想從第11行的關鍵字開始搜索。但是,如何?

回答

0

試試這個:

df.iloc[11:].to_csv("yourcsv.csv", index=False, header=None) 
+0

謝謝。它的工作,但只有在此行之後: df = df [df [[0,2]]。apply(lambda r:r.str.contains('CVE-2016',case = False).any(),axis = 1)] 但我想排除搜索/匹配字符串的行 – TigerClaw

0

如果你不想放棄行,「看到」只從某行的數據框,您可以使用ILOC功能:

df["column name"].iloc[11:].apply(function) 

這個例子你從第11行開始直到最後一行並應用您的功能。

DataFrame.iloc

用於通過位置選擇

純整數基於位置的索引。

允許的輸入爲:

一個整數,例如, 5.

  • 整數的列表或數組,例如, [4,3,0]。

  • 帶有整數的切片對象,例如1:7。

  • 一個布爾數組。

  • 使用一個參數(主叫系列,數據幀或面板),並且返回用於索引有效輸出(上面一個)

.iloc[]是基於主要的整數位置(從A可調用功能軸的0length-1),但也可以與布爾數組一起使用。

+0

不要按我想要的方式工作。 此這裏適用於我: #排除前10行 DF1 = pd.DataFrame(df.iloc [:10])中第0列 #匹配字和2以及顯示我的行 DF2 = DF [DF [[0,2]]。apply(lambda r:r.str.contains('CVE-2016',case = False)。任何(),軸= 1)] #合併排除和過濾的行 df = pd.concat([df1,df2],axis = 0) – TigerClaw

0

我不確定你的意思是「因爲我的行」0-10「包含信息,我想從第11行的關鍵字開始搜索」。

如果您的意思是您需要前10行作爲過濾器後續工作的條件,那麼您可以按行迭代並使用np.where。

如果情況並非如此,那麼我相信其他兩個答案(John,Rafael)已經解決了您的問題,因此您可以對它們進行投票。