У меня есть датафрейм, который выглядит примерно так:
date holiday item_cnt_day shop_id cnt_sem cnt_mes cnt_year
0 2013-01-01 1 0.0 59 0.000000 0.000000 0.000000
1 2013-01-02 1 0.0 59 0.000000 0.000000 0.000000
2 2013-01-03 1 0.0 59 0.000000 0.000000 0.000000
3 2013-01-04 1 0.0 59 0.000000 0.000000 0.000000
4 2013-01-05 0 0.0 59 0.000000 0.000000 0.000000
...... ... ... ... ... ... ...
1029 2015-10-27 0 4.0 36 1.142857 0.321429 0.024658
1030 2015-10-28 0 1.0 36 1.285714 0.357143 0.027397
1031 2015-10-29 0 1.0 36 1.142857 0.392857 0.030137
1032 2015-10-30 0 4.0 36 1.714286 0.535714 0.041096
1033 2015-10-31 0 1.0 36 1.857143 0.571429 0.043836
даты начинаются с 2013-01-01 по 2015-10-31, и этот диапазон дат для каждого shop_id, то есть для каждого shop_id у меня есть этот диапазон дат, поэтому у меня есть повторяющиеся даты, но я пытаюсь сделать так, чтобы были только те даты, которые идут после первых 365 дней для shop_id, и я пытаюсь сделать это с помощью с помощью этой функции:
def no_todos(df, shops):
# shops is a list of shops and there are 60 shops in this list
# df is the dataframe to be operated in the loop
new_df = pd.DataFrame(df)
# Here I'm trying to only keep those observations which come after the first 365 days for each shop
for t in shops:
new_df['shop_id'][t] = df[365::]
return new_df
Однако у меня возникает эта ошибка: Переиндексация действительна только для объектов индекса с уникальным значением. Кто-нибудь знает, как решить эту проблему? Заранее спасибо.