我有这个文本文件:
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']