Pandas - 删除所有连续的行,除了第一行与相同列值共享

3
我将为您翻译以下内容:“我有一个如下的数据框架:”
A B C D
- - - -
h e l 0
t h i 0
i s m 0
q u e 1
s t i 1

我想删除所有在D列中连续具有相同值的行,但保留第一行。结果如下:

A B C D
- - - - 
h e l 0
q u e 1

迄今为止,我使用以下代码完成了它:

df[list(map(lambda x: (x == 0) or (df['D'][x] != df['D'][x-1]), range(len(D))))]

我想知道是否有更好的方法来做这件事?


@jezrael 这个看起来和你标记为重复的不太一样。OP想要删除连续的重复项。 - Vivek Kalyanarangan
1
@VivekKalyanarangan - 添加了新的重复项... - jezrael
1个回答

4

使用 -

df.loc[df['D'].shift(1) != df['D']]

输出

    A   B   C   D
0   h   e   l   0
3   q   u   e   1

我担心如果“0”出现超过2次,这个程序就无法正常工作了。对吧? - Lokesh
@Lokesh没明白你的意思。我按照OP的示例尝试了一下,其中包含了3个连续的重复项,对我来说是有效的。 - Vivek Kalyanarangan
2
感谢您的出色回答。一切都顺利无问题!你太棒了! - Lokesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接