我正在尝试删除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
答案 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