Python(Pandas):基于两列删除重复项,并在另一列中保留带有标志的行

时间:2019-05-17 19:21:05

标签: python pandas

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方法吗?

3 个答案:

答案 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")

这一行应该可以解决您的问题。