Удалить строку, если она содержит определенное значение в пандах - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть этот текстовый файл:

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 голосов
/ 08 ноября 2018

Как есть, символы кавычек по-прежнему включены в ваш фрейм данных. Вероятно, это выглядит так:

>>> 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
0 голосов
/ 08 ноября 2018

df[(df['LEID'] !='1')] выбирает по столбцам. Вам нужно df.loc[df['LEID'] !='1']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...