跨年按日历周分组

2024-03-29 12:18:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想按日历周分组数据。然而,我有多年的数据。因此,不仅仅是周数,而是每年单独计算。下面是一个例子

ix = pd.DatetimeIndex(['2019-12-25', '2019-12-28', '2019-12-31', '2020-01-03'])
df = pd.DataFrame({'col': [1, 1, 1, 1]}, index=ix)

我的问题是第一周的几天还是上一年

>>> df.groupby([ix.year, ix.month, ix.week]).count()

            count
2019 12 1       1
        52      2
2020 1  1       1

我该如何分组以生成日历周?在这里它将产生两组两行


Tags: 数据dataframedfindexcountcolyear例子
1条回答
网友
1楼 · 发布于 2024-03-29 12:18:48

从epoch日期(1/1/1970)获取周数可能会有所帮助

day_delta = pd.to_datetime(df.index) - pd.to_datetime('19700101')
df['day'] = (day_delta / np.timedelta64(1, 'D')).astype(int) - 3     # considering week start as sunday
df['week'] = df['day'].apply(lambda x: int(x / 7))
print(df)

输出:

            col    day  week
2019-12-25    1  18252  2607
2019-12-28    1  18255  2607
2019-12-31    1  18258  2608
2020-01-03    1  18261  2608

这使得2019-12-31和2020-01-03在同一周内

我猜您需要计算从epoch日期开始的月份数和年份数,并使用年、月和周数(从epoch日期开始)对它们进行分组

相关问题 更多 >