Python 数据帧:比较两个相邻行的值并添加列
我有一个数据框,其中我必须比较一个特定列的两个相邻行的值,如果它们相等,那么在一个新列中,需要在相应的第一行中添加0,如果第二行中的值大于第一行,则添加1,如果较小,则添加-1。例如,在以下数据帧上执行这样的操作 应该给出以下输出Python 数据帧:比较两个相邻行的值并添加列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框,其中我必须比较一个特定列的两个相邻行的值,如果它们相等,那么在一个新列中,需要在相应的第一行中添加0,如果第二行中的值大于第一行,则添加1,如果较小,则添加-1。例如,在以下数据帧上执行这样的操作 应该给出以下输出 我们所寻找的是变化的迹象。我们将其分为3个步骤: diff将获取每行与前一行的差异,这将捕获更改 x/abs(x)是捕捉某物符号的常用方法。当我们将d除以d.abs()时,我们在这里使用它 最后,由于diff和除以零,我们在第一个位置有一个剩余nan。我们可以用
我们所寻找的是变化的迹象。我们将其分为3个步骤:
diff
将获取每行与前一行的差异,这将捕获更改x/abs(x)
是捕捉某物符号的常用方法。当我们将d
除以d.abs()
时,我们在这里使用它diff
和除以零,我们在第一个位置有一个剩余nan
。我们可以用零填充它们您可以使用以下方法: 但是,为了获得您的(与您的描述相矛盾)信息,您可以执行以下操作:
In [30]: df['column3'] = np.sign(df.column1.diff().fillna(0)).shift(-1).fillna(0)
In [31]: df
Out[31]:
column1 column2 column3
0 2 0.0 0.0
1 2 0.0 1.0
2 4 1.0 0.0
3 4 0.0 1.0
4 5 1.0 -1.0
5 3 -1.0 -1.0
6 2 -1.0 -1.0
7 1 -1.0 1.0
8 55 1.0 -1.0
9 3 -1.0 0.0
请检查这个。
In [27]: df['column2'] = np.sign(df.column1.diff().fillna(0))
In [28]: df
Out[28]:
column1 column2
0 2 0.0
1 2 0.0
2 4 1.0
3 4 0.0
4 5 1.0
5 3 -1.0
6 2 -1.0
7 1 -1.0
8 55 1.0
9 3 -1.0
In [30]: df['column3'] = np.sign(df.column1.diff().fillna(0)).shift(-1).fillna(0)
In [31]: df
Out[31]:
column1 column2 column3
0 2 0.0 0.0
1 2 0.0 1.0
2 4 1.0 0.0
3 4 0.0 1.0
4 5 1.0 -1.0
5 3 -1.0 -1.0
6 2 -1.0 -1.0
7 1 -1.0 1.0
8 55 1.0 -1.0
9 3 -1.0 0.0