如果它在熊猫中包含某个值,则删除一行

时间:2018-11-07 22:06:21

标签: python 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'的行?

2 个答案:

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