[英]Drop a row in a Pandas Dataframe if any column contains a certain value, in said row
[英]Drop a row if it contains a certain value in pandas
我有这个文本文件:
LEU,LEID,PPP,YYY,LEO
'1','2','3','4','5'
'2','1','2','3','4'
'2','AA','','',''
我想删除 LEID='1' 的行
import pandas as pd
import os
originalFile=os.path.abspath("D:\\python\\test\\OriginalFile.csv")
df = pd.read_csv(originalFile)
df = df[(df['LEID'] !='1')]
df.to_csv('D:\\python\\test\\CorrectedFile.csv')
print (df)
为什么 LEID='1' 的行没有删除?
正如您所拥有的,引号字符仍包含在您的数据框中。 它可能看起来像:
>>> df
LEU LEID PPP YYY LEO
0 '1' '2' '3' '4' '5'
1 '2' '1' '2' '3' '4'
2 '2' 'AA' '' '' ''
因此,您实际上需要在过滤器中包含这些引号。 你可以这样做:
df[df['LEID'] != "'1'"]
# or:
df[df['LEID'] !='\'1\'']
LEU LEID PPP YYY LEO
0 '1' '2' '3' '4' '5'
2 '2' 'AA' '' '' ''
另一种方法是在阅读 csv 时删除单引号:
df = pd.read_csv(originalFile, sep=',', quotechar="'")
你会得到这个数据框:
>>> df
LEU LEID PPP YYY LEO
0 1 2 3.0 4.0 5.0
1 2 1 2.0 3.0 4.0
2 2 AA NaN NaN NaN
您可以像尝试一样过滤:
df[df['LEID' ]!= '1']
LEU LEID PPP YYY LEO
0 1 2 3.0 4.0 5.0
2 2 AA NaN NaN NaN
df[(df['LEID'] !='1')]
在列上选择。 你需要df.loc[df['LEID'] !='1']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.