python pandas的新手,需要删除重复的索引行,并且仅根据一列的标志保留重复项中的一行,如下所示:
Index value 1 value2 flag
1 10 20 on
1 30 40 off
2 11 22 on
2 32 42 off
3 12 22 on
3 33 43 off
,并在基于索引和标志cloumn的过滤器之后,输出应为:
Index value 1 value2 flag
1 10 20 on
2 11 22 on
3 12 22 on
如何用pandas df做到这一点,我应该使用drop_duplicates方法吗?
答案 0 :(得分:0)
这应该做:
--word-diff
这假设您的标志实际上是“ on”和“ off”,因此,如果按df=df.reset_index()
df=df.sort_values(by=['index','flag'])
df= df.drop_duplicates('index', keep='last')
和index
对值进行排序,则flag
将始终位于最后。它还假定您的索引名称为on
。
答案 1 :(得分:0)
尝试
df = df[df['flag']=='on'].drop_duplicates(subset='index', keep='last')
仅过滤带有in标志的行,然后删除索引中的重复项
答案 2 :(得分:0)
df.sort_values('flag').drop_duplicates('Index', inplace = True, keep = "last")
这一行应该可以解决您的问题。