I have the following 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
And I would like to get a data frame with the pct change in the data frame only if this two values are adjacent and not separated by NaN.
i.e. I would like this:
Date A
2015-01-02 0.2857
2015-01-10 -0.8
2015-01-14 -0.38
But if I do: df.pct_change()
it will return the pct change between 14 and 5 for the 201-01-07
Use pct_change
and shift
:
df.pct_change()[df.shift(1).notnull()].dropna()
Output:
A
Date
2015-01-02 0.400000
2015-01-10 -0.800000
2015-01-14 -0.380952
use cumsum
on isnull
to find groups to groupby
s = df.set_index('Date').A
c = n.cumsum()
s.groupby(c).pct_change().dropna().reset_index()
Date A
0 2015-01-02 0.400000
1 2015-01-10 -0.800000
2 2015-01-14 -0.380952
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With