如何根据列值在pandas DataFrame中仅删除连续的行(除一行外的所有行)?



我有一个DataFrame,看起来像这样:

Column1  Column2 
0     cat        A 
1     cat        B 
2     cat        C 
3     dog        D 
4     dog        E 
5     cat        F

我想删除除列1具有重复值的连续行外的所有行。因此,我想删除第1、2和4行,但我想保留第0、3和5行。如果我没弄错的话,drop_duplicate几乎可以工作,但会删除第5行。Cat和dog可能在后面的行中出现多次,但是我只想保留任何连续行中的一个。

我试过df。drop_duplduplicate(子集='cat', keep='first'),但是删除了第5行

您可以使用:

out = df.groupby(df['Column1'].ne(df['Column1'].shift()).cumsum()).head(1)

输出:


Column1 Column2
0     cat       A
3     dog       D
5     cat       F

最新更新