如何对Pandas Dataframe中的行执行基本算术运算?

时间:2019-07-12 10:59:08

标签: python python-3.x pandas

我试图弄清楚我需要学习以下行操作。我已经简化了所有步骤,以便最好地传达我想要达到的目标。

我的最终目标是对于数据框中的每一行,从另一列的上一行中减去一个值。

假设我具有以下数据框:

    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

我不确定我应该熟悉哪种操作才能了解如何执行此操作。我有点想增加列并对其进行基本操作。

3 个答案:

答案 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