Ошибка ‘Не поддерживается для типа RangeIndex’ при вычислении скорости еженедельного роста

#python-3.x #pandas #dataframe #indexing

#python-3.x #pandas #фрейм данных #индексирование

Вопрос:

У меня есть фрейм данных MyDf, подобный этому

 MyDate      MyData      
2020-06-02  4588.0
2020-06-03  4555.5
2020-06-04  4604.3
2020-06-05  4634.1
2020-06-06  4617.8  
2020-06-07  4598.9  
2020-06-08  4596.1  
2020-06-09  4607.0  
2020-06-10  4601.6  
2020-06-11  4547.4
  

Я хочу рассчитать еженедельный темп роста столбца MyData таким образом:

     #'WeeklyRate'='MyData'/pastweek('MyData')
    from pandas.tseries.offsets import Week
    MyDf['WeeklyRate'] = ((MyDf['MyData'] / MyDf['MyData'].shift(1, freq=Week()).reindex(MyDf['MyDate'].index))
                                           .fillna(value=-1)
                                           .astype(float))
    #ToDo:not sure if .astype(float)
  

Но я получаю сообщение об ошибке «Не поддерживается для типа RangeIndex», когда я запускаю последнюю строку.
Что я делаю не так?

Ответ №1:

Я думаю, что если вы установите «myDate» в качестве своего индекса, это будет решено 🙂

 MyDf = MyDf.set_index("MyDate")
MyDf['WeeklyRate'] = MyDf['MyData'] / MyDf['MyData'].shift(1, freq=Week())
MyDf['WeeklyRate'] = MyDf["WeeklyRate"].fillna(value=-1)
  

Комментарии:

1. У меня был MyDf.set_index(«myDate») вместо MyDf = MyDf.set_index(«myDate»)