执行只考虑时间序列数据帧中前一年的pct_change()?

问题描述 投票:0回答:1

我有一个示例数据帧“df”:

df = pd.DataFrame({'Year': [2000, 2002, 2003, 2004], 
                   'Name': ['A'] * 4, 
                   'Value': [4, 1, 1, 3]})

当我执行pct_change()即

df['change'] = df['Value'].pct_change()

行Year = 2002的计算“更改”值为-0.75。我怎么能让Pandas返回2002年的N / A,因为2001年的数据不见了,因为我只想考虑前一年的时间序列?

干杯。

python pandas dataframe
1个回答
2
投票

使用set_index + reindex + pct_changefill_method=None -

  1. 首先,将Year设置为索引
  2. 获取从最小值到最大值的范围,并使用此范围重新索引数据帧。缺少的年份现在添加为NaNs
  3. 在没有填充pct_changes的情况下在Value上调用NaN
r = np.arange(df.Year.min(), df.Year.max() + 1)
df = df.set_index('Year').reindex(r)
v = df['Value'].pct_change(fill_method=None)
df = df.assign(Change=v).dropna(how='all').reset_index()

df

   Year Name  Value  Change
0  2000    A    4.0     NaN
1  2002    A    1.0     NaN
2  2003    A    1.0     0.0
3  2004    A    3.0     2.0
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.