我试图弄清楚我需要学习以下行操作。我已经简化了所有步骤,以便最好地传达我想要达到的目标。
我的最终目标是对于数据框中的每一行,从另一列的上一行中减去一个值。
假设我具有以下数据框:
Date Open High Low Close Difference
0 2014-07-14 197.61 197.86 197.44 197.60
1 2014-07-15 197.72 198.10 196.36 197.23
2 2014-07-16 198.11 198.26 197.42 197.96
我要计算差异列,其计算公式为:
Open(n) - Close(n-1) : where n is the current day.
所以我要从今天的开盘价中减去昨天的收盘价。
它应该输出到:
Difference
NaN
0.12
0.88
我不确定我应该熟悉哪种操作才能了解如何执行此操作。我有点想增加列并对其进行基本操作。
答案 0 :(得分:2)
您只需要从Close
中减去Open
的移位版本,就可以得到DataFrame.shift
:
df.Open.sub(df.Close.shift()).rename('Difference')
0 NaN
1 0.12
2 0.88
Name: Difference, dtype: float64
答案 1 :(得分:0)
我尝试使用移位功能。如果需要,请使用groupby:
import pandas as pd
Data = {'Date': ['2014-07-14', '2014-07-15','2014-07-16'],
'Open': [197.61, 197.72,198.11],
'High': [197.86,198.10,198.26],
'Low':[197.44,196.36 ,197.42],
'Close': [197.60 ,197.23,197.96 ]
}
df = pd.DataFrame(Data, columns = ['Date','Open','High','Low','Close'])
df['Difference']=df['Open']-df['Close'].shift(1)
答案 2 :(得分:0)
移位功能可为您完成工作!
使用shift(1)
创建包含所有成对差异的'diffs'数组
并附加到df
作为名为“差异”的新列。函数中的参数表示要用于成对减法的步长。
diffs = df['Open'] - df['Close'].shift(1)
df['difference'] = diffs