我想在delete
rows
中pandas
个特定的df
。我想基于不希望的值加上随后的row
删除row
。对于以下df
,我要删除row
,其中Code == 'Cat'
和随后的row
。以下是我的尝试。
import pandas as pd
将熊猫作为pd导入
d = ({
'Code' : ['Foo','Bar','Cat','Foo','Foo'],
'Int' : ['x','y','a','a','x'],
})
df = pd.DataFrame(d)
df = df[df.Code.shift()!='Cat']
Code Int
0 Foo x
1 Bar y
2 Cat a
4 Foo x
预期输出:
Code Val
0 Foo x
1 Bar y
2 Foo x
答案 0 :(得分:2)
将boolean indexing
与~
运算符(逻辑否)和|
运算符(逻辑 OR )一起使用:
df[~(df.Code.eq('Cat') | df.Code.shift(1).eq('Cat'))]
Code Int
0 Foo x
1 Bar y
4 Foo x
答案 1 :(得分:1)
另一种方式:
df = df[~((df['Code'] == 'Cat') | (df['Code'].shift(1) == 'Cat'))]
现在:
print(df)
是:
Code Val
0 Foo x
1 Bar y
4 Foo x