user9639519
user9639519

Reputation:

How to delete a rows pandas df

I am trying to remove a row in a pandas df plus the following row. For the df below I want to remove the row when the value in Code is equal to X. But I also want to remove the subsequent row as well.

import pandas as pd

d = ({
    'Code' : ['A','A','B','C','X','A','B','A'],
    'Int' : [0,1,1,2,3,3,4,5],
    })

df = pd.DataFrame(d)

If I use this code it removes the desired row. But I can't use the same for value A as there are other rows that contain A, which are required.

df = df[df.Code != 'X'] 

So my intended output is:

  Code  Int
0    A    0
1    A    1
2    B    1
3    C    2
4    B    4
5    A    5

I need something like df = df[df.Code != 'X'] +1

Upvotes: 1

Views: 614

Answers (2)

BENY
BENY

Reputation: 323226

Using shift

df.loc[(df.Code!='X')&(df.Code.shift()!='X'),]
Out[99]: 
 Code  Int
0    A    0
1    A    1
2    B    1
3    C    2
6    B    4
7    A    5

Upvotes: 1

rdrey
rdrey

Reputation: 9529

You need to find the index of the element you want to delete, and then you can simply delete at that index twice:

>>> i = df[df.Code == 'X'].index
>>> df.drop(df.index[[i]], inplace=True)
>>> df.drop(df.index[[i]], inplace=True, errors='ignore')
>>> df
  Code  Int
0    A    0
1    A    1
2    B    1
3    C    2
6    B    4
7    A    5

Upvotes: 0

Related Questions