在前一行中存储两列熊猫的差异

时间:2019-07-23 18:53:56

标签: python pandas

我有一个以这种方式构造的熊猫数据框:

#    DateTime       Open       Close   
1    2000-01-04    1420    1460
2    2000-01-05    1470    1480 
3    2000-01-06    1460    1420
4    2000-01-07    1420    1430 

为了解决我的问题,计算“关闭”和“打开”之间的差,并将结果转换为二进制值-1(如果差为负,则1为差为正),非常重要。

以这种方式执行此操作非常简单:

df['label'] = (df['close'] - df['open'] > 0).astype(int)
df.loc[df['label'] == 0, ['label']] = -1

这样,我得到以下结果:

#    DateTime       Open       Close       Label   
1    2000-01-04    1420    1460    1
2    2000-01-05    1470    1480    1 
3    2000-01-06    1460    1420    -1
4    2000-01-07    1420    1430    1

但是,现在我想将下一行结果放在上一个结果中,以得到以下结果:

#    DateTime       Open       Close       Label   
1    2000-01-04    1420    1460    1
2    2000-01-05    1470    1480    -1 
3    2000-01-06    1460    1420    1
4    2000-01-07    1420    1430    NaN

2 个答案:

答案 0 :(得分:1)

您可以使用shift进行操作

df['Label'] = df['Label'].shift(-1)

答案 1 :(得分:1)

您可以这样做:

df['label'] = (df['close'] - df['open'] > 0).astype(int)

# shift by -1 the value of label so for the DateTime x you have the label of x+1
df['label'] = df['label'].shift(-1)

# remove the last one row because it have NaN as label
df = df[:-1]