我有这个文本文件:
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'的行?
答案 0 :(得分: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
答案 1 :(得分:0)
df[(df['LEID'] !='1')]
在列上选择。您需要df.loc[df['LEID'] !='1']