【问题标题】:TypeError while formatting pandas.df.pct_change() output to percentage将 pandas.df.pct_change() 输出格式化为百分比时出现 TypeError
【发布时间】:2021-08-12 03:35:53
【问题描述】:

我正在尝试通过定义一个函数从 CSV 文件中以百分比格式计算股票的每日收益。 这是我的代码:

def daily_ret(ticker):
  return f"{df[ticker].pct_change()*100:.2f}%"

当我调用函数时,我得到这个错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-40-7122588f1289> in <module>()
----> 1 daily_ret('AAPL')

<ipython-input-39-7dd6285eb14d> in daily_ret(ticker)
      1 def daily_ret(ticker):
----> 2   return f"{df[ticker].pct_change()*100:.2f}%"

TypeError: unsupported format string passed to Series.__format__

我哪里错了?

【问题讨论】:

    标签: python pandas typeerror stock


    【解决方案1】:

    f-strings 不能用于格式化这样的可迭代对象,即使是 Series:

    请改用mapapply

    def daily_ret(ticker):
        return (df[ticker].pct_change() * 100).map("{:.2f}%".format)
    
    def daily_ret(ticker):
        return (df[ticker].pct_change() * 100).apply("{:.2f}%".format)
    

    import numpy as np
    import pandas as pd
    
    df = pd.DataFrame({'A': np.arange(1, 6)})
    
    print(daily_ret('A'))
    
    0       nan%
    1    100.00%
    2     50.00%
    3     33.33%
    4     25.00%
    Name: A, dtype: object
    

    【讨论】:

      猜你喜欢
      • 2021-04-11
      • 2015-09-30
      • 2016-03-13
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多