簡體   English   中英

如果前一行等於某個值,則從 Pandas df 中刪除一行

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM