如何计算DataFrame相邻年份列的数值变化百分比
相邻年份变化百分比计算方案
你可以直接使用pandas内置的pct_change()方法完成需求,不需要额外自定义函数,具体实现如下:
核心实现逻辑
- 先将非数值的国家名称列
rownames设为行索引,避免被纳入数值计算 - 调用
pct_change(axis=1)沿水平方向(列方向)逐行计算相邻列的变化率,计算规则为(当前列值 - 前一列值)/前一列值,结果就是相邻年份的变化百分比 - 计算完成后直接删除无前置对比基准的
2015Y列即可
完整可运行代码
# 设置国家列为行索引 df_result = dfhigh.set_index('rownames') # 计算相邻年份的变化百分比 df_result = df_result.pct_change(axis=1) # 删除无基准的2015Y列 df_result = df_result.drop(columns="2015Y") # 如需将国家名还原为普通列,执行下行代码即可 df_result = df_result.reset_index()
注意事项
- 方法默认返回小数形式的变化率,比如返回值
0.636代表较前一年上涨63.6%,如果需要展示为百分号格式,可以对数值列做df_result[年份列] = df_result[年份列].apply(lambda x: f"{x*100:.2f}%")格式化 - 如果原始数据中存在前一年数值为0的情况,计算会返回无穷大值,可提前将0值替换为空值避免异常:
dfhigh = dfhigh.replace(0, pd.NA)
内容的提问来源于stack exchange,提问作者lasagna
相关产品推荐
相关产品推荐

