我有一个以这种方式构造的熊猫数据框:
# 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
答案 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]