Python 数据帧:比较上一个值和下一个值
我是Python和Pandas的新手,拥有以下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
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]]