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

如何在pandas中计算两列间的百分比变化并解决相关TypeError报错

报错原因排查

你给出的列类型显示2020、2021两列本身都是int64数值类型,不存在类型问题,报错大概率是列调用方式错误导致:

  • 你的列名是字符串类型的'2021'、'2020',如果调用时不加引号写为UKnewcars[2021],会被识别为按整数索引取值,无法匹配到正确的数值列
  • 数字开头的列名不能用UKnewcars.2021这种属性调用方式,不符合Python标识符命名规则,会触发语法错误
  • 误将字符串类型的Model列加入数值运算,也会触发int和str的运算报错

正确计算两列百分比变化的两种方法

百分比变化的计算逻辑为:(本期值 - 基期值)/基期值 * 100%,你要计算2021年相对2020年的变化,可选用下面任意一种方式:

方法1:手动公式计算(可读性更高)

# 计算百分比变化,单位为%,保留2位小数
UKnewcars['2021_vs_2020_pct'] = ((UKnewcars['2021'] - UKnewcars['2020']) / UKnewcars['2020'] * 100).round(2)

# 如果需要显示为带百分号的字符串格式,可追加下面的代码
UKnewcars['2021_vs_2020_pct'] = UKnewcars['2021_vs_2020_pct'].astype(str) + '%'

方法2:使用pct_change函数(适配多列批量计算场景)

pct_change可以通过指定axis=1实现列之间的百分比变化计算,注意调整列顺序保证基期在前、本期在后:

# 按列方向计算百分比变化,直接取2021列的结果即可
UKnewcars['2021_vs_2020_pct'] = (UKnewcars[['2020', '2021']].pct_change(axis=1)['2021'] * 100).round(2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:39:00