#python #pandas #typeerror #stock
Вопрос:
Я пытаюсь рассчитать ежедневную доходность акций в процентном формате из файла 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__
Где я ошибаюсь?
Ответ №1:
f-строки нельзя использовать для форматирования подобных итераций, даже серий:
Используйте map
или apply
вместо этого:
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