为何不同期限maturite计算Taux act列时得到的数值全部相同?
可能的原因汇总
- 期限判断逻辑错误:判断是否大于1年时,未和365(天)比较,而是直接和数值1比较。你的maturite字段存储的是天数,27、70均大于1,会全部触发「大于1年」的规则,如果此时你错误引用了固定的利率值而非每行的
Taux moyen pondéré,就会得到相同结果。 - maturite字段未做格式转换:示例中maturite是带有
days后缀的字符串格式,未提取数字转为整数的情况下,字符串比较或数值计算都会触发异常逻辑,比如所有行都走默认分支、调用全局变量计算,得到相同结果。 - 计算公式书写错误:你给出的小于1年的计算式存在语法问题,缺少利率和期限之间的乘号,正确公式应为:
如果代码中漏写运算符、或者把利率、期限写为固定常量,所有行都会用同一个值计算,得到相同结果。Taux act = (1 + 加权平均利率(小数形式) * 期限天数 / 360) ** (365 / 期限天数) - 1 - 利率单位未转换:
Taux moyen pondéré字段存储的是百分比数值(如2.3对应2.3%),如果计算时没有除以100转为小数,同时代码存在异常容错逻辑,也可能返回相同的固定值。 - pandas赋值逻辑错误:新增列时误将单行计算结果直接赋值给整列,触发pandas的广播机制,所有行都会被覆盖为同一个值。
内容的提问来源于stack exchange,提问作者Dounia
相关产品推荐
相关产品推荐

