【问题标题】:Pandas - Delete all consecutive rows except the first one which share same column value [duplicate]Pandas - 删除除共享相同列值的第一行之外的所有连续行[重复]
【发布时间】:2019-04-21 20:21:16
【问题描述】:

我有一个如下的数据框:

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希望删除连续的重复项
  • @VivekKalyanarangan - 添加了新的欺骗......

标签: pandas dataframe


【解决方案1】:

使用 -

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 没找到你。我针对包含 3 个连续重复项的 OP 示例进行了尝试,它对我有用
  • 感谢您的出色回答。工作没有问题!你摇滚
猜你喜欢
  • 2015-12-11
  • 1970-01-01
  • 2019-11-14
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
  • 2020-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多