首页 > 解决方案 > 如何删除熊猫中与上面的行值相同的行?

问题描述

我正在将 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

请帮忙!

标签: pythonpandas

解决方案


您可以将 for not equal 与for mask 和 filter bySeries.ne创建的值进行比较:Series.shiftboolean 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

推荐阅读