Python 删除在第一个组之后出现的重复组
我的数据框如下所示:Python 删除在第一个组之后出现的重复组,python,pandas,Python,Pandas,我的数据框如下所示: 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
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'
,它定义了名称的连续组,然后为每个名称只保留第一组:(图中左侧的“辅助对象”列)
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