You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多索引DataFrame结合groupBy计算年度pct_change报错求助

解决多索引DataFrame分组计算年度pct_change的报错问题

报错原因

你推测的结论正确:groupby("company")后每个子组的索引仍是MultiIndex(company+date),而pct_change的freq参数要求索引必须是DatetimeIndex/PeriodIndex/TimedeltaIndex类型,因此触发NotImplementedError。

解决方案

在apply的lambda函数中,先移除子组里的company索引层级,只保留date作为单独的DatetimeIndex,再调用pct_change即可。

修改后的代码:

period = 1
df["pct_chng_3"] = df.groupby("company", group_keys=False)\
    .apply(lambda x: x['indicator1']
                       .reset_index(level='company', drop=True)
                       .pct_change(periods=period, freq='Y'))

代码说明

  • reset_index(level='company', drop=True):移除子组中的company索引层级,将date转为单独的DatetimeIndex,满足pct_change对索引类型的要求。
  • freq='Y':指定按年度计算变化率,即每个日期对应前一年的同一日期计算百分比变化(如2018-01-01对应2017-01-01,2018-05-01因无2017-05-01数据,结果为NaN)。

示例结果片段

以company1为例,计算后的数据如下:

companydateindicator1pct_chng_3
company12015-01-0197.0NaN
company12016-01-0155.0-0.4330
company12017-01-0147.0-0.1455

内容的提问来源于stack exchange,提问作者Arseni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:27:46