在Python中切割数据框中的第n行

时间:2019-05-22 21:40:00

标签: python python-3.x pandas dataframe

我有一个具有类似列的数据框:

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到较大的变化的索引都不是“常规”。

有一种简单的方法吗?

2 个答案:

答案 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