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