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

格式化pandas.df.pct_change()输出为百分比时出现TypeError如何解决

问题根因

df[ticker].pct_change() 执行后返回的是pandas Series对象(对应该股票整列的日收益率数据,包含多个数值),而f字符串里的.2f格式符仅支持对单个数值做格式化,无法直接作用于Series整体,因此触发了类型报错。

修复方案

根据你的使用场景二选一即可:

  • 场景1:需要返回整列所有交易日的百分比格式收益率
    用apply()方法对Series里的每个元素单独做格式化,修改后代码如下:
    def daily_ret(ticker):
      return (df[ticker].pct_change() * 100).apply(lambda x: f"{x:.2f}%")
    
    注意:pct_change()返回的第一个值为NaN,格式化后会显示为nan%,如果需要排除空值可以调整为:
    def daily_ret(ticker):
      return (df[ticker].pct_change().dropna() * 100).apply(lambda x: f"{x:.2f}%")
    
  • 场景2:只需要返回单个交易日(比如最新交易日)的百分比格式收益率
    先从Series中取出单个数值后再做格式化,修改后代码如下:
    def daily_ret(ticker):
      # iloc[-1]表示取序列最后一个值,也就是最新交易日的收益率
      latest_ret = df[ticker].pct_change().iloc[-1] * 100
      return f"{latest_ret:.2f}%"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 15:45:08