如何删除行熊猫df

时间:2018-07-19 23:23:09

标签: python pandas

我正在尝试删除pandas df和下面的row中的一行。对于下面的df,我想在row中的值等于Code时删除X。但我也想删除后续的row

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)

如果我使用此代码,它将删除所需的row。但是我无法对值A使用相同的值,因为其他行包含A是必需的。

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

所以我的预期输出是:

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

我需要类似df = df[df.Code != 'X'] +1

2 个答案:

答案 0 :(得分:1)

使用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

答案 1 :(得分:0)

您需要找到要删除的元素的索引,然后只需在该索引处删除两次即可:

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