在关心NaN值的同时如何获取数据框中值的变化百分比?

ast*_*ths 5 python dataframe pandas

我有以下DataFrame:

   Date                 A                
   2015-01-01          10               
   2015-01-02          14               
   2015-01-05          NaN               
   2015-01-06          NaN                
   2015-01-07          5
   2015-01-10          1  
   2015-01-11          NaN  
   2015-01-12          21  
   2015-01-14          13 
Run Code Online (Sandbox Code Playgroud)

而且我只想获得一个数据帧,其中只有这两个值相邻且不以NaN分隔时,pct才会发生变化。

即我想这样:

        Date                 A                             
       2015-01-02         0.2857                           
       2015-01-10         -0.8  
       2015-01-14         -0.38
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做了df.pct_change(),它将为201-01-07返回14到5之间的pct更改

Sco*_*ton 5

使用pct_changeshift

df.pct_change()[df.shift(1).notnull()].dropna()
Run Code Online (Sandbox Code Playgroud)

输出:

                   A
Date                
2015-01-02  0.400000
2015-01-10 -0.800000
2015-01-14 -0.380952
Run Code Online (Sandbox Code Playgroud)