假设我有一周=1
则("1 Jan"、"7 Jan"(应为输出。
我相信你需要GroupBy.agg
,但也是必要的year
,因为dt.week
每年都不一样:
rng = pd.date_range('2017-04-03', periods=100)
df = pd.DataFrame({'Date': rng})
df = df.groupby(df['Date'].dt.week)['Date'].agg([('start','first'),('end','last')])
print (df)
start end
Date
14 2017-04-03 2017-04-09
15 2017-04-10 2017-04-16
16 2017-04-17 2017-04-23
17 2017-04-24 2017-04-30
18 2017-05-01 2017-05-07
19 2017-05-08 2017-05-14
20 2017-05-15 2017-05-21
21 2017-05-22 2017-05-28
22 2017-05-29 2017-06-04
23 2017-06-05 2017-06-11
24 2017-06-12 2017-06-18
25 2017-06-19 2017-06-25
26 2017-06-26 2017-07-02
27 2017-07-03 2017-07-09
28 2017-07-10 2017-07-11
rng = pd.date_range('2019-04-03', periods=100)
df = pd.DataFrame({'Date': rng})
df = df.groupby(df['Date'].dt.week)['Date'].agg([('start','first'),('end','last')])
print (df)
start end
Date
14 2019-04-03 2019-04-07
15 2019-04-08 2019-04-14
16 2019-04-15 2019-04-21
17 2019-04-22 2019-04-28
18 2019-04-29 2019-05-05
19 2019-05-06 2019-05-12
20 2019-05-13 2019-05-19
21 2019-05-20 2019-05-26
22 2019-05-27 2019-06-02
23 2019-06-03 2019-06-09
24 2019-06-10 2019-06-16
25 2019-06-17 2019-06-23
26 2019-06-24 2019-06-30
27 2019-07-01 2019-07-07
28 2019-07-08 2019-07-11