Pandas系列:查找连续行中值之间的关系

时间:2017-02-12 17:48:23

标签: python pandas dataframe

我们说我有一系列的1和0:

      value    
0     0 
1     1 
2     0 
3     0 
4     1 
5     1

找到的可行方式是什么:

  • 第一行,其中值为1(第1行)
  • 前一个,当前值和下一个值为0,0,1(第3行)
  • 的第一行
  • 前一个,当前值为0,1(第4行)
  • 的最后一行
  • 以前的当前值为0,1(第4,1行)
  • 的所有行

在0和1的情况下,我目前正在加入值并使用正则表达式,但我相信一般来说,这将是手动循环索引的情况。还有更好的方法吗?

此外,如果确实存在更好的方法,那么对于数据框架是否也存在类似的解决方案,其中您的条件涉及多个列?

1 个答案:

答案 0 :(得分:1)

IIUIC,使用shift并查询。

第一行,其中值为1(第1行)

In [486]: df[(df.value == 1)].head(1)
Out[486]:
   value
1      1

前一个,当前值和下一个值为0,0,1(第3行)的第一行

In [487]: df[(df.value.shift(1) == 0) & (df.value == 0) & (df.value.shift(-1) == 1)]
Out[487]:
   value
3      0

前一个当前值为0,1(第4行)的最后一行

In [489]: df[(df.value.shift(1) == 0) & (df.value == 1)].tail(1)
Out[489]:
   value
4      1

以前的当前值为0,1(第4,1行)

的所有行
In [490]: df[(df.value.shift(1) == 0) & (df.value == 1)]
Out[490]:
   value
1      1
4      1