执行只考虑timeseries数据帧中的上一年的pct\U change()?

2024-05-17 14:06:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

当我执行pct\u change()时,即

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

行年份=2002的计算“变化”值为-0.75。由于2001年的数据丢失,我只想考虑时间序列中的前一年,我如何才能让熊猫返回2002年的N/a?你知道吗

干杯。你知道吗


Tags: 数据name示例dataframedfvalue时间序列
1条回答
网友
1楼 · 发布于 2024-05-17 14:06:06

set_index+reindex+pct_changefill_method=None-

  1. 首先,设置Year作为索引
  2. 获取从最小到最大的年份范围,并使用此范围重新索引数据帧。丢失的年份现在添加为NaNs
  3. Value上调用pct_change,不填充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

相关问题 更多 >