python pandas-使用上一个非na值计算百分比变化

时间:2019-01-25 20:29:59

标签: python pandas dataframe

我是python的新手(大多数情况下我使用R),我想执行简单的计算,但是会不断收到错误和错误的结果。我想使用最新的non-na值来计算pandas df中某列的百分比变化。下面是一个玩具示例。

price = ['Nan', 10, 13, 'NaN', 'NaN', 9]
df = pd.DataFrame(price, columns = ['price'])
df['price_chg'] = df.price.pct_change(periods = -1)

我一直得到一个奇怪的结果:

price_chg = [Nan, -0.2307, 0, 0, 0.4444, NaN] 

我想这与Nan值有关。我如何告诉python使用最新的non-na值。预期结果如下:

price_chg = [Nan, -0.2307, 0.4444, 0, 0, NaN]

由于我一点也不了解python,因此欢迎任何建议,甚至更复杂的建议。

1 个答案:

答案 0 :(得分:1)

我相信您要寻找的是在调用pct_change函数时采用回填。

df['price_chg'] = df.price.pct_change(periods = -1, fill_method='backfill')

结果是:

1   -0.230769
2    0.444444
3    0.000000
4    0.000000
5         NaN

This page描述了在调用pct_change时拥有的选项,包括fill_method。 您可以了解有关熊猫here

中可用的填充方法的更多信息