如果一行包含panda中的某个值,请将其删除



我有这个文本文件:

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']

最新更新