python pandas百分比随dataframe列的变化而变化

时间:2018-02-12 09:51:46

标签: python pandas dataframe

我刚开始学习大熊猫并有疑问。 首先,我想问一下。

我有数据框,就像下面一样。

  Date        Open        High         Low       Close    
2015-11-02  711.059998  721.619995  705.849976  721.109985   
2015-11-03  718.859985  724.650024  714.719971  722.159973   
2015-11-04  722.000000  733.099976  721.900024  728.109985   
2015-11-05  729.469971  739.479980  729.469971  731.250000   
2015-11-06  731.500000  735.409973  727.010010  733.760010   

我知道

df["Close"].pct_change() 

将百分比从关闭更改为关闭。

但是, 我想添加一个新列“CloseToOpen”,这是“昨天接近今天开放”的百分比变化。

因此,它是“开放(第0天)/关闭(第-1天)-1”。 当然,第一行应该是“NaN”或Zero,因为没有“前一天关闭”。

如何用python pandas代码制作呢?

谢谢你们!

这就是我想要的。

Date        Open        High        Low         Close       CloseToOpen
2015-11-02  711.059998  721.619995  705.849976  721.109985  0.000000
2015-11-03  718.859985  724.650024  714.719971  722.159973  -0.003120
2015-11-04  722.000000  733.099976  721.900024  728.109985  -0.000222
2015-11-05  729.469971  739.479980  729.469971  731.250000  0.001868
2015-11-06  731.500000  735.409973  727.010010  733.760010  0.000342

2 个答案:

答案 0 :(得分:4)

使用:

df['CloseToOpen'] = df['Open'].sub(df['Close'].shift()).div(df['Close'] - 1).fillna(0)
print (df)
                  Open        High         Low       Close  CloseToOpen
Date                                                                   
2015-11-02  711.059998  721.619995  705.849976  721.109985     0.000000
2015-11-03  718.859985  724.650024  714.719971  722.159973    -0.003120
2015-11-04  722.000000  733.099976  721.900024  728.109985    -0.000220
2015-11-05  729.469971  739.479980  729.469971  731.250000     0.001862
2015-11-06  731.500000  735.409973  727.010010  733.760010     0.000341

答案 1 :(得分:0)

您还可以使用标准操作数来实现您想要的效果:

df['CloseToOpen'] = (df['Open'] / df['Close'].shift(1) - 1).fillna(0)