Pandas Dataframe неделя повторной выборки, начиная с первого дня года - PullRequest
0 голосов
/ 13 мая 2019

У меня есть фрейм данных, содержащий почасовые данные, я хочу получить максимум для каждой недели года, поэтому я использовал ресэмплирование для группировки данных по неделям

weeks = data.resample("W").max()

проблема в том, что рассчитывается максимум неделиначиная с первого понедельника года, а я хочу, чтобы он рассчитывался с первого дня года.

Я получаю следующий результат, где вы можете заметить, что 53 недели, а последняя неделярассчитывается на следующий год, в то время как 2017 года не существует в данных

Date        dots       
2016-01-03  0.647786
2016-01-10  0.917071
2016-01-17  0.667857
2016-01-24  0.669286
2016-01-31  0.645357


Date        dots                
2016-12-04  0.646786
2016-12-11  0.857714
2016-12-18  0.670000
2016-12-25  0.674571
2017-01-01  0.654571

есть ли способ рассчитать неделю для кадра данных панд, начинающегося в первый день года?

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Найдите начальный день года, например, допустим, что это пятница, а затем вы можете указать суффикс привязки для повторной выборки, чтобы рассчитать неделю, начинающуюся с первого дня года: weeks = data.resample("W-FRI").max()

1 голос
/ 13 мая 2019

Одно быстрое лекарство, учитывая данные за один год, вы можете сначала сгруппировать их по дням, а затем взять группу из 7 дней:

new_df = (df.resample("D", on='Date').dots
            .max().reset_index()
         )

new_df.groupby(new_df.index//7).agg({'Date': 'min', 'dots': 'max'})

new_df.head()

Выход:

    Date        dots
0   2016-01-01  0.996387
1   2016-01-08  0.999775
2   2016-01-15  0.997612
3   2016-01-22  0.979376
4   2016-01-29  0.998240
5   2016-02-05  0.995030
6   2016-02-12  0.987500

и хвост:

    Date        dots
48  2016-12-02  0.999910
49  2016-12-09  0.992910
50  2016-12-16  0.996877
51  2016-12-23  0.992986
52  2016-12-30  0.960348
...