如何查找熊猫第一行中符合条件的列?

时间:2020-05-04 02:16:19

标签: python pandas

我有一个带有[x,y,z]列的Pandas DataFrame,它将具有浮点值。 我想创建一个新列,告诉我从每个x [row]开始,哪个列首先达到x [row]的特定百分比。

例如,假设我的x [5] = 2,我的y目标是10%,而我的z目标是-10%,我想找出的是哪个先发生,y> = 2.20或z = <1.80,从第5行开始(仅在y或z首先出现时才发生在第6行或1.000.000上都无所谓)。

这应该是第四列(对于y,值可以简单到0,对于z,值可以简单到1)。 如果此值从不满足或两列在同一行相交,则可能为-1。

结果应该是一个新列,指出基于该行x的哪一列(y或z)首先具有百分比差异(从该行开始)。

我可以轻松地通过遍历每一行的双循环(第一个循环),存储x并开始比较y和z来确定哪个首先满足该条件(第二个循环)。但是我知道,通常可以使用pandas函数解决这些问题,从而使代码更简洁甚至更快。

这是我的问题的输入(3列)和输出(第4列)的示例(假设差异标志设置为10%(y)和-10%(z):

 [1.0, 1.0, 1.0][0] // y met the +10% criteria first in row 1 (1.0 -> 1.2)
 [1.2, 1.2, 1.0][1] // z met the -10% criteria first in row 2 (1.2 -> 0.9)
 [1.3, 1.3, 0.9][0] // y met the +10% criteria first in row 3 (1.3 -> 1.6)
 [1.1, 1.6, 1.2][1] // z met the -10% criteria first in row 5 (1.1 -> 0.9)
 [1.8, 1.1, 1.1][1] // z met the -10% criteria first in row 5 (1.8 -> 0.9)
 [1.2, 1.8, 0.9][-1] // none met the criteria

1 个答案:

答案 0 :(得分:1)

听起来像您需要使用df ['x']。shift(-1)来获取标准和比较。但是我不知道这听起来像是一个复杂的逻辑,我没有理解。

我建议您使用numpy数组创建自定义逻辑,如果在numba函数中使用它,它可能比使用熊猫更快。