python pandas百分比随数据框的列而变化

B.A*_*.A. 4 python dataframe pandas

我刚开始研究熊猫,并有疑问。首先,我想问这个。

我有数据框,如下所示。

  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   
Run Code Online (Sandbox Code Playgroud)

我知道

df["Close"].pct_change() 
Run Code Online (Sandbox Code Playgroud)

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

但是,我想添加一个新列“ 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
Run Code Online (Sandbox Code Playgroud)

zip*_*ipa 6

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

df['CloseToOpen'] = (df['Open'] / df['Close'].shift(1) - 1).fillna(0)
Run Code Online (Sandbox Code Playgroud)


jez*_*ael 5

使用:

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
Run Code Online (Sandbox Code Playgroud)