繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM