熊猫的星期六开始的一周

时间:2021-03-05 02:26:01

标签: python

我的数据中有不同的日期。我想把日期定为从星期六开始的一周。怎么做?

enter image description here

1 个答案:

答案 0 :(得分:0)

我根据图片对你的问题的理解是:给定一个日期,生成一个日期,其中:

  1. 如果初始日期是星期六,则生成的日期是相同的日期,并且
  2. 如果初始日期不是星期六,则生成的日期是该日期之前的最近一个星期六

datetime.dayofweek() 方法返回 0..6 for Monday..Sunday.

import datetime

def most_recent_saturday(d):
    day_adjustment = (dt.weekday() + 2) % 7
    delta = datetime.timedelta(days=day_adjustment)
    return dt - delta

for day in range(4, 11):
    dt = datetime.datetime(2021, 3, day)
    dt2 = most_recent_saturday(dt)

    print("date: {}, day of week {}, saturday: {}".format(dt, dt.weekday(), dt2))

编辑:由于 OP 想要使用 Pandas 数据框,这将起作用(修改注释中给出的示例):

import datetime
import pandas as pd

vals = []
for day in range(4, 11):
    dt = datetime.datetime(2021, 3, day)
    vals.append(dt)

df = pd.DataFrame(data=vals, columns=['SYS_DATE'])
df['Week Commencing Saturday'] = pd.to_datetime(df['SYS_DATE']) - pd.offsets.Week(weekday=4) + pd.offsets.Day(1)

print(df)

输出:

    SYS_DATE Week Commencing Saturday
0 2021-03-04               2021-02-27
1 2021-03-05               2021-02-27
2 2021-03-06               2021-03-06
3 2021-03-07               2021-03-06
4 2021-03-08               2021-03-06
5 2021-03-09               2021-03-06
6 2021-03-10               2021-03-06