我正在将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
请帮助!
答案 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