[英]Delete a row from a Pandas df if the previous row is equal to some value
我有一个df
index id action
1 A crawl
2 A walk
3 A run
4 B crawl
5 B run
6 B walk
7 B jump
8 B walk
只有在run
前一行时,我才想删除带有 text walk
的某一行。
结果df:
index id action
1 A crawl
2 A walk
3 A run
4 B crawl
5 B run
7 B jump
8 B walk
df = df.drop(df[df['action'].eq('run').shift(1, fill_value=False) & df['action'].eq('walk')].index, axis=0)
Output:
>>> df
index id action
0 1 A crawl
1 2 A walk
2 3 A run
3 4 B crawl
4 5 B run
6 7 B jump
7 8 B walk
这是您的 dataframe:
import pandas as pd
dataset = pd.DataFrame(
{'index':list(range(1,9)),'id': ['A', 'A', 'A', 'B', 'B', 'B','B','B'],
'action': ['crawl','walk','run','crawl','run','walk','jump','walk']})
然后,您可以创建一个带有移位操作的临时列,并编写以下条件:
dataset[(dataset.action!='walk') | (dataset['action'].shift(1)!='run')]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.