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

Python 执行pct_change(),只考虑时间序列数据帧中的上一年?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个示例数据帧“df”: 当我执行pct_change()时,即 行年份=2002的计算“变化”值为-0.75。我怎么能让熊猫返回2002的N/A,因为2001的数据丢失了,因为我只想在时间序列中考虑直接的前一年? 干杯。使用设置索引+重新索引+pct\u更改和填充方法=无- 首先,将Year设置为索引 获取从最小到最大的年数范围,并使用此范围重新索引数据帧。缺失的年份现在添加为NaNs 调用pct\u changeonValue而不填充NaNs 使用set\u index+reindex+

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

当我执行pct_change()时,即

行年份=2002的计算“变化”值为-0.75。我怎么能让熊猫返回2002的N/A,因为2001的数据丢失了,因为我只想在时间序列中考虑直接的前一年?


干杯。

使用
设置索引
+
重新索引
+
pct\u更改
填充方法=无
-

  • 首先,将
    Year
    设置为索引
  • 获取从最小到最大的年数范围,并使用此范围重新索引数据帧。缺失的年份现在添加为
    NaN
    s
  • 调用
    pct\u change
    on
    Value
    而不填充
    NaN
    s
    使用
    set\u index
    +
    reindex
    +
    pct\u change
    fill\u method=None
    -

  • 首先,将
    Year
    设置为索引
  • 获取从最小到最大的年数范围,并使用此范围重新索引数据帧。缺失的年份现在添加为
    NaN
    s
  • 调用
    pct\u change
    on
    Value
    而不填充
    NaN
    s
    谢谢如何将此解决方案扩展到具有不同年份值范围的多个“名称”ID(例如“B”、“C”等)?@user2530766您可以
    groupby
    Name
    。代码需要稍作修改。你能用一个合适的数据样本来回答一个新问题吗?请在这里回答多个ID的后续问题:谢谢。如何将此解决方案扩展到具有不同年份值范围的多个“名称”ID(例如“B”、“C”等)?@user2530766您可以
    groupby
    Name
    。代码需要稍作修改。您能否使用适当的数据样本提出新问题?请在此处跟进多个ID的问题:
    df = pd.DataFrame({'Year': [2000, 2002, 2003, 2004], 
                       'Name': ['A'] * 4, 
                       'Value': [4, 1, 1, 3]})
    
    df['change'] = df['Value'].pct_change()
    
    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