Python 数据帧:比较上一个值和下一个值

Python 数据帧:比较上一个值和下一个值,python,python-3.x,pandas,numpy,dataframe,Python,Python 3.x,Pandas,Numpy,Dataframe,我是Python和Pandas的新手,拥有以下DataFrame: predictedFeature offset 2000 1 2000 2 0 4 0 6 2200 9 2200 11 2200 15 2200 16

我是Python和Pandas的新手,拥有以下
DataFrame

predictedFeature   offset
        2000         1
        2000         2
        0            4
        0            6
        2200          9
        2200        11
        2200         15
        2200       16
        2200         17
         0            19
         0           21  
         0            22
         0           26
         200        29
         200         31
          0          35
         200         56
         200        59
         200       71
         200        73
         100       75
         100       77
         160       79
         160       80
         100       83
           0       87
         100       89
           0       91
我正在尝试检查此列中值“0”的上下文。如果一个值为“0”,我需要将其前三个值和后三个值组成一个数组

我已经有了一个类似于
required
[100162200262156160256]
的数组

当我得到

previous_array = [200,200,0]
next_array = [200,200,200] 
。。。我需要检查
先前的_数组
是否具有我的
必需的
数组中的值

有人能帮我吗

比如说,

我有上面提到的数据帧

现在,在这里有
0
存在的地方。现在,我想用所需数组中的值替换该0。现在,

如果我们看到,在该数据帧的第三位有一个0。现在,如果我们取前3个值,那么它只有两个,因为它本身是第三个

所以会是[20002000] 接下来是[022002200]

现在,如果我在所需的数组中检查这个数组,那么这些值就不在其中了。所以,我不打算对此做任何事情

现在如果你看到前面三个是0

[0,0,0] and next three are [200,200,0]
现在,如果我将它与所需数组进行比较,并且下一个数组与之匹配,那么将用
200
同样如此


我还添加了偏移量列。

另一种方法是使用该函数

此功能使您能够通过将值向上或向下移动(n),创建一个新列
pF\n
,它是列
predictedFeature
的偏移(移位)。然后,您可以使用
df.iterrows()
对行进行循环,以进行直线比较,从零行中获取上一个/下一个第三个值。然后,根据这些结果构建数组

例如: 输出: 围绕零的值数组:
pF-3
列是前面的三个值,
pF3
列是下面的第三个值


我希望这能有所帮助。

实际上,我正在尝试在数组中获取这些值,然后compare@ganeshkaspate-好的。我已经更新了代码,将0周围的值添加到数组中。无论如何,这会让你走上正确的轨道。
import pandas as pd

vals = ['2000', '2000', '0', '0', '2200',
        '2200', '2200', '2200', '2200', '0',
        '0','0', '0', '200', '200', '0', '200',
        '200', '200', '200', '100', '100', '160',
         '160', '100', '0', '100', '0']

df = pd.DataFrame({'pF': vals})

# Shift to get the third **previous** value.
df['pF-3'] = df['pF'].shift(3)
# Shift to get the third **following** value.
df['pF3'] = df['pF'].shift(-3)

# Add values surrounding 0 to a list.
results = [row.values.tolist() for _, row in df.iterrows() if row['pF'] == 0]
      pF  pF-3   pF3
0   2000   NaN     0
1   2000   NaN  2200
2      0   NaN  2200
3      0  2000  2200
4   2200  2000  2200
5   2200     0  2200
6   2200     0     0
7   2200  2200     0
8   2200  2200     0
9      0  2200     0
10     0  2200   200
11     0  2200   200
12     0     0     0
13   200     0   200
14   200     0   200
15     0     0   200
...  ...   ...   ...
[[0.0, nan, 2200.0],
 [0.0, 2000.0, 2200.0],
 [0.0, 2200.0, 0.0],
 [0.0, 2200.0, 200.0],
 [0.0, 2200.0, 200.0],
 [0.0, 0.0, 0.0],
 [0.0, 0.0, 200.0],
 [0.0, 160.0, nan],
 [0.0, 100.0, nan]]