首页 > 解决方案 > 如何在 Python 中选择数据框的某些行?

问题描述

我有一个看起来像这样的熊猫数据框:

              x_cor
y_cor             
893.200012       1
893.299988      17
893.400024      41
893.500000      39
893.599976      40
893.700012      36
893.799988       2
893.900024      13
894.000000      44
894.099976      43
894.200012      74
894.299988      88
894.400024      78
894.500000     132
894.599976     180
894.700012     178

我想要做的是根据条件选择某些行,并从中创建2个不同的数据框(其中一个由满足条件的行组成,另一个由不符合条件的行组成) t 满足条件)。条件是x_cor每一行的值是否大于前面和后面的x_cor值。

例如,第 3 行893.400024 41满足条件,因为上一行的 x_cor 为 17,下一行的 x_cor 为 39,均小于 41。

我认为如果我使用带有ilocor的循环将是低效的ix。有什么更好的方法来做到这一点?

标签: pythonpandas

解决方案


利用shift

df.loc[(df.x_cor > df.x_cor.shift(1)) & (df.x_cor > df.x_cor.shift(-1))]

         y_cor  x_cor
2   893.400024     41
4   893.599976     40
8   894.000000     44
11  894.299988     88
14  894.599976    180

推荐阅读