我有一个具有类似列的数据框:
x y z
1 10 20
2 10 18
3 11 16.5
4 11 12
5 12 23
6 11 21
7 10 19
8 10 26
.
.
每当z_n + 1大于z_n时,我都想剪切该z_n。
输出为:
x y z
1 10 20
2 10 18
3 11 16.5
5 12 23
6 11 21
8 10 26
.
.
它不会每隔x次出现-每次从较小的z_n到较大的变化的索引都不是“常规”。
有一种简单的方法吗?
答案 0 :(得分:2)
我们可以使用shift
向后看一排,并使用~
进行相反的操作:
df[~(df['z'].shift() < df['z'])]
x y z
0 1 10 20.0
1 2 10 18.0
2 3 11 16.5
3 4 11 12.0
5 6 11 21.0
6 7 10 19.0
答案 1 :(得分:1)
尝试:
df[~(df.z.diff(-1) < 0)]
输出:
x y z
0 1 10 20.0
1 2 10 18.0
2 3 11 16.5
4 5 12 23.0
5 6 11 21.0
7 8 10 26.0