当前位置: 代码迷 >> python >> python pandas百分比随dataframe列的变化而变化
  详细解决方案

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

热度:65   发布时间:2023-07-16 10:47:25.0

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

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

  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”或零,因为没有“前一天的关闭”。

我怎么能用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

使用:

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

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

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