#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»)