如何删除大熊猫中与上述行具有相同值的行?

时间:2019-12-02 09:55:40

标签: python pandas

我正在将Python与pandas库一起使用。我有如下的DataFrame

                       slope    decision
Date        
2019-10-31 20:38:00 -0.000062    1
2019-10-31 20:39:00 -0.000411    0
2019-10-31 20:40:00 -0.000901    0
2019-10-31 20:41:00 -0.001053    1
2019-10-31 20:42:00 -0.001213    1
... ... ...
2019-10-31 23:54:00 -0.000103    0
2019-10-31 23:55:00 -0.000035    0
2019-10-31 23:56:00 -0.000143    0
2019-10-31 23:57:00 -0.000233   -1
2019-10-31 23:58:00 -0.000305   -1

现在,我想删除连续与其下一行具有相同值的任何行。只需将其行中“决策”列的值发生变化即可,如下所示

                       slope    decision
Date        
2019-10-31 20:38:00 -0.000062    1
2019-10-31 20:39:00 -0.000411    0
2019-10-31 20:41:00 -0.001053    1
... ... ...
2019-10-31 23:54:00 -0.000103    0
2019-10-31 23:57:00 -0.000233   -1

请帮助!

1 个答案:

答案 0 :(得分:2)

您可以比较由Series.ne创建的Series.shift值和掩码,并由boolean indexing进行过滤:

df1 = df[df['decision'].ne(df['decision'].shift())]

或者比较与Series.diff的差是否不是0

df1 = df[df['decision'].diff().ne(0)]

print (df1)
                        slope  decision
Date                                   
2019-10-31 20:38:00 -0.000062         1
2019-10-31 20:39:00 -0.000411         0
2019-10-31 20:41:00 -0.001053         1
2019-10-31 23:54:00 -0.000103         0
2019-10-31 23:57:00 -0.000233        -1