将日期转换为每周的星期一日期
Converting date to Monday date of each week
我有一个 df
:
date
2021-06-28
2021-06-29
2021-06-30
2021-07-02
2021-07-04
2021-07-07
2021-08-06
2021-08-07
我正在尝试将其转换为周,我知道我可以使用 df.date.dt.isocalendar().week
,但是这个 returns 具有默认开始日期的周数,而我的开始日期是 2021-06-28
.
我可以在 df
中使用 pd.Grouper(key = 'date', freq = 'W-MON', label = 'left', closed = 'left')
在 groupby
中实现日期,但我想在不使用 groupby
的情况下获得相同的输出 - 只需将函数应用于 date
列。
我的目标是:
date
2021-06-28
2021-06-28
2021-06-28
2021-06-28
2021-06-28
2021-07-05
2021-08-02
2021-08-02
因为这些日期代表该日期所在的每个星期的星期一。
你可以转换成'W-SUN'period得到第一天:
df['date'] = pd.to_datetime(df['date'])
df['Monday'] = df['date'].dt.to_period('W-SUN').dt.start_time
注意。为什么 'W-SUN'?这表示星期 ending 在 SUN(天)中,因此从星期一开始。见 anchored offsets.
输出:
date Monday
0 2021-06-28 2021-06-28
1 2021-06-29 2021-06-28
2 2021-06-30 2021-06-28
3 2021-07-02 2021-06-28
4 2021-07-04 2021-06-28
5 2021-07-07 2021-07-05
6 2021-08-06 2021-08-02
7 2021-08-07 2021-08-02
我有一个 df
:
date
2021-06-28
2021-06-29
2021-06-30
2021-07-02
2021-07-04
2021-07-07
2021-08-06
2021-08-07
我正在尝试将其转换为周,我知道我可以使用 df.date.dt.isocalendar().week
,但是这个 returns 具有默认开始日期的周数,而我的开始日期是 2021-06-28
.
我可以在 df
中使用 pd.Grouper(key = 'date', freq = 'W-MON', label = 'left', closed = 'left')
在 groupby
中实现日期,但我想在不使用 groupby
的情况下获得相同的输出 - 只需将函数应用于 date
列。
我的目标是:
date
2021-06-28
2021-06-28
2021-06-28
2021-06-28
2021-06-28
2021-07-05
2021-08-02
2021-08-02
因为这些日期代表该日期所在的每个星期的星期一。
你可以转换成'W-SUN'period得到第一天:
df['date'] = pd.to_datetime(df['date'])
df['Monday'] = df['date'].dt.to_period('W-SUN').dt.start_time
注意。为什么 'W-SUN'?这表示星期 ending 在 SUN(天)中,因此从星期一开始。见 anchored offsets.
输出:
date Monday
0 2021-06-28 2021-06-28
1 2021-06-29 2021-06-28
2 2021-06-30 2021-06-28
3 2021-07-02 2021-06-28
4 2021-07-04 2021-06-28
5 2021-07-07 2021-07-05
6 2021-08-06 2021-08-02
7 2021-08-07 2021-08-02