2017-09-13 174 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)已经解决了您的问题,因此您可以对它们进行投票。