首页 > 解决方案 > 您如何计算数据框中的这种差异?

问题描述

所以如果我有这样的数据框,

Index  Date       Open     High      Low     Close      
                                                                   
1    2017-04-25  2378.50  2389.25  2377.50  2385.00  
2    2017-04-26  2384.75  2394.75  2382.00  2382.75   
3    2017-04-27  2386.50  2388.75  2378.75  2386.25   
4    2017-04-28  2388.00  2388.25  2378.25  2380.50    
5    2017-05-01  2386.00  2390.75  2380.75  2387.00   
6    2017-05-02  2387.50  2388.75  2381.75  2386.00   

如何计算 Open[2]-Close[1] 并为每一行执行此操作,即 Open[i]-Close[i-1]?

Index  Date       Open     High      Low     Close   DIFF(O-C)    
                                                                   
1    2017-04-25  2378.50  2389.25  2377.50  2385.00  
2    2017-04-26  2384.75  2394.75  2382.00  2382.75   -0.25
3    2017-04-27  2386.50  2388.75  2378.75  2386.25    3.75
..................

我想要一个像上面这样的专栏。

我不确定我的 google-fu 是弱还是什么,但找不到答案。我需要使用循环进行这种分析吗?

标签: pythonpandasnumpy

解决方案


用于Series.sub减去移位的行Series.shift

df['DIFF(O-C)'] = df['Open'].sub(df['Close'].shift())
print (df)
         Date     Open     High      Low    Close  DIFF(O-C)
1  2017-04-25  2378.50  2389.25  2377.50  2385.00        NaN
2  2017-04-26  2384.75  2394.75  2382.00  2382.75      -0.25
3  2017-04-27  2386.50  2388.75  2378.75  2386.25       3.75
4  2017-04-28  2388.00  2388.25  2378.25  2380.50       1.75
5  2017-05-01  2386.00  2390.75  2380.75  2387.00       5.50
6  2017-05-02  2387.50  2388.75  2381.75  2386.00       0.50

推荐阅读