У меня есть DataFrame с почасовыми данными о ценах за два года. Я использую DataFrame.pct_change()
для расчета процентной доходности с разной периодичностью (ежечасно, ежедневно, еженедельно и т. д.). Это работает, когда я использую freq='H'
, freq='D'
или любой из них (например: freq='7D'
или freq='168H'
), но я получаю «ValueError: невозможно переиндексировать из дублирующейся оси», когда я пытаюсь использовать частоту, превышающую день, например freq='W'
или freq='M'
.
Вот несколько скриншотов:
Мне не понятно, почему параметры частоты перестают работать за пределами дня ('D'). Любое понимание будет оценено.
Заранее спасибо.
P.S. Вот код:
"""freq=H: Calculates the returns of each row relative to 1 row(s) before."""
daily_data2016to2018_df.pct_change(freq='H').head()
"""freq=4H: Calculates the returns of each row relative to 4 row(s) before."""
daily_data2016to2018_df.pct_change(freq='4H').head(10)
"""freq=D: Calculates the returns of each row relative to 24 row(s) before."""
daily_data2016to2018_df.pct_change(freq='D').head(30)
"""freq=W: Calculates the returns of each row relative to 24*7 row(s) before."""
daily_data2016to2018_df.pct_change(freq='W').head(30)
"""I don't understand why frequencies greater than a day aren't working.
I could see why frequencies less than an hour wouldn't work because
the data isn't that granular, but why not weekly, monthly, etc.?"""
daily_data2016to2018_df.pct_change(freq='M')