使用 python 的年度聚合周(周从 01 01 YYYY 开始)
week of the year aggregation using python (week starts from 01 01 YYYY)
我在之前的问题中搜索,并没有解决我正在搜索的问题,请你帮助我
我有一个来自
的数据集
Date T2M Y T F H G Week_Number
0 1981-01-01 11.08 17.35 6.94 0.00 5.37 4.63 1
1 1981-01-02 10.82 16.41 7.51 0.00 5.55 2.73 1
2 1981-01-03 10.74 15.64 7.35 0.00 6.23 2.33 1
3 1981-01-04 11.17 15.99 8.46 0.00 6.16 1.66 1
4 1981-01-05 10.20 15.60 6.87 0.12 6.10 2.78 2
5 1981-01-06 10.35 16.16 5.95 0.00 6.59 3.92 2
6 1981-01-07 12.26 18.24 9.30 0.00 6.10 2.30 2
7 1981-01-08 12.76 19.23 8.72 0.00 6.29 3.96 2
8 1981-01-09 12.61 17.80 8.90 0.00 6.71 2.05 2
我已经使用此代码创建了周数列
df['Week_Number'] = df['Date'].dt.week
但它只给我设计第一周的一年的前四天,也许这意味着一周从星期一开始。在我的案例中,如果它从星期一或另一天开始,我不会给予兴趣,我只想每 7 天细分一次(每年每 7 天分组一次,例如从 1 1 1980 到 07 1 1980 FISRT WEEK,然后继续, 并且每年的第一周也从 1 1 xxxx
开始
如果您希望周数从 1 月 1 日开始,而不考虑星期几,只需获取一年中的第几天,减去 1 并计算除以 7 的整数:
df['Date'] = pd.to_datetime(df['Date'])
df['week_number'] = df['Date'].dt.dayofyear.sub(1).floordiv(7).add(1)
注意。如果您希望第一周以 0
开头,则无需加 1
输出:
Date T2M Y T F H G Week_Number week_number
0 1981-01-01 11.08 17.35 6.94 0.00 5.37 4.63 1 1
1 1981-01-02 10.82 16.41 7.51 0.00 5.55 2.73 1 1
2 1981-01-03 10.74 15.64 7.35 0.00 6.23 2.33 1 1
3 1981-01-04 11.17 15.99 8.46 0.00 6.16 1.66 1 1
4 1981-01-05 10.20 15.60 6.87 0.12 6.10 2.78 2 1
5 1981-01-06 10.35 16.16 5.95 0.00 6.59 3.92 2 1
6 1981-01-07 12.26 18.24 9.30 0.00 6.10 2.30 2 1
7 1981-01-08 12.76 19.23 8.72 0.00 6.29 3.96 2 2
8 1981-01-09 12.61 17.80 8.90 0.00 6.71 2.05 2 2
然后可以使用新的列来groupby
,例如:
df.groupby('week_number').agg({'Date': ['min', 'max'], 'T2M': 'sum'})
输出:
Date T2M
min max sum
week_number
1 1981-01-01 1981-01-07 76.62
2 1981-01-08 1981-01-09 25.37
我在之前的问题中搜索,并没有解决我正在搜索的问题,请你帮助我
我有一个来自
的数据集 Date T2M Y T F H G Week_Number
0 1981-01-01 11.08 17.35 6.94 0.00 5.37 4.63 1
1 1981-01-02 10.82 16.41 7.51 0.00 5.55 2.73 1
2 1981-01-03 10.74 15.64 7.35 0.00 6.23 2.33 1
3 1981-01-04 11.17 15.99 8.46 0.00 6.16 1.66 1
4 1981-01-05 10.20 15.60 6.87 0.12 6.10 2.78 2
5 1981-01-06 10.35 16.16 5.95 0.00 6.59 3.92 2
6 1981-01-07 12.26 18.24 9.30 0.00 6.10 2.30 2
7 1981-01-08 12.76 19.23 8.72 0.00 6.29 3.96 2
8 1981-01-09 12.61 17.80 8.90 0.00 6.71 2.05 2
我已经使用此代码创建了周数列
df['Week_Number'] = df['Date'].dt.week
但它只给我设计第一周的一年的前四天,也许这意味着一周从星期一开始。在我的案例中,如果它从星期一或另一天开始,我不会给予兴趣,我只想每 7 天细分一次(每年每 7 天分组一次,例如从 1 1 1980 到 07 1 1980 FISRT WEEK,然后继续, 并且每年的第一周也从 1 1 xxxx
开始如果您希望周数从 1 月 1 日开始,而不考虑星期几,只需获取一年中的第几天,减去 1 并计算除以 7 的整数:
df['Date'] = pd.to_datetime(df['Date'])
df['week_number'] = df['Date'].dt.dayofyear.sub(1).floordiv(7).add(1)
注意。如果您希望第一周以 0
开头,则无需加 1输出:
Date T2M Y T F H G Week_Number week_number
0 1981-01-01 11.08 17.35 6.94 0.00 5.37 4.63 1 1
1 1981-01-02 10.82 16.41 7.51 0.00 5.55 2.73 1 1
2 1981-01-03 10.74 15.64 7.35 0.00 6.23 2.33 1 1
3 1981-01-04 11.17 15.99 8.46 0.00 6.16 1.66 1 1
4 1981-01-05 10.20 15.60 6.87 0.12 6.10 2.78 2 1
5 1981-01-06 10.35 16.16 5.95 0.00 6.59 3.92 2 1
6 1981-01-07 12.26 18.24 9.30 0.00 6.10 2.30 2 1
7 1981-01-08 12.76 19.23 8.72 0.00 6.29 3.96 2 2
8 1981-01-09 12.61 17.80 8.90 0.00 6.71 2.05 2 2
然后可以使用新的列来groupby
,例如:
df.groupby('week_number').agg({'Date': ['min', 'max'], 'T2M': 'sum'})
输出:
Date T2M
min max sum
week_number
1 1981-01-01 1981-01-07 76.62
2 1981-01-08 1981-01-09 25.37