簡體   English   中英

刪除出現在第一組之后的重復組

[英]Drop group of duplicates that appear after first group

我的數據框如下所示:

index   name   value
0       John   Foo
1       John   Bar
2       John   Bar
3       John   Foo
4       Jane   Foo
5       Jane   Bar
6       Jane   Bar
7       John   Foo
8       John   Bar

我正在嘗試將出現的所有出現的John放在出現該名稱的第一組之后,以便數據看起來像:

index   name   value
0       John   Foo
1       John   Bar
2       John   Bar
3       John   Foo
4       Jane   Foo
5       Jane   Bar
6       Jane   Bar

當然,使用df.drop_duplicates(['name'])僅會使每個名稱保留一行。 我知道有多種方法可以解決,但是否有熊貓特定的方法來刪除重復出現在特定值的連續行之后的值?

創建一個幫助程序列'ng' ,該列定義連續的name組,然后僅保留每個名稱的第一組:

df['ng'] = df.groupby(df.name.ne(df.name.shift(1)).cumsum()).ngroup()
df[df.groupby('name').ng.transform('min') == df.ng]

   name value  ng
0  John   Foo   0
1  John   Bar   0
2  John   Bar   0
3  John   Foo   0
4  Jane   Foo   1
5  Jane   Bar   1
6  Jane   Bar   1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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