在Python中每N行剪切一次数据帧
我有一个dataframe,其中的列如下:在Python中每N行剪切一次数据帧,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个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多次出
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的每次变化的指数不是“规则的”
有没有简单的方法可以做到这一点?试试:
df[~(df.z.diff(-1) < 0)]
我们可以使用
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
df[~(df['z'].shift()
df.drop(df.z.diff().le(0))
检查输出。我认为19号应该被淘汰。
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