[英]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.