我有一个数据框,其中已将“地区”和“年份”设置为多级索引。我想计算每个地区每年每一列(“ DEM”,“ REP”等)的百分比变化。
我已咨询this previous SO question并尝试使用以下代码:
for idx, districts_bydistrict_select in districts_bydistrict.groupby(level=[0, 1]):
y = districts_bydistrict.pct_change()
print(pd.DataFrame(y))
但是,当有新的区时,它无法识别开始pct_change()计算。我意识到我可能缺少for循环的一部分。
答案 0 :(得分:1)
您只需在groupby
中指定级别。
districts_bydistrict.groupby(level='Year').pct_change()
您可以取消堆叠区域,以便仅在索引中有时间,计算pct_change
,然后重新堆叠区域。
districts_bydistrict.unstack('DISTRICTS').pct_change().stack()