ipdb> df["input"]
datetime
2011-01-01 2.577163
2011-01-02 0.579833
2011-01-03 -0.191187
2011-01-04 0.430754
ipdb> df["input"].pct_change()
datetime
2011-01-01 NaN
2011-01-02 -0.775011
2011-01-03 -1.329728
2011-01-04 -3.253050
我希望2011-01-04 -3.253050
的值为3.253050。 pct_change()函数中是否有允许这样的选项?否则,这将是一种有效的方法吗?
基本上对于每个pct_change计算,如果前一个值<1,我想乘以-1。 0和当前值> 0.理想情况下,我想要一种不在python中使用for循环的方法,但现在就想到了这一点。
答案 0 :(得分:1)
你可以写出你的条件,并在任何地方乘以-1:
>>> p = df["input"].pct_change()
>>> p
datetime
2011-01-01 NaN
2011-01-02 -0.775011
2011-01-03 -1.329728
2011-01-04 -3.253051
Name: input, dtype: float64
>>> p.loc[(df["input"].shift() < 0) & (df["input"] > 0)] *= -1
>>> p
datetime
2011-01-01 NaN
2011-01-02 -0.775011
2011-01-03 -1.329728
2011-01-04 3.253051
Name: input, dtype: float64