Pandas 动态日期时间周开始

Pandas dynamic date time week start

我正在尝试在我的 pandas 数据框中创建一个动态日期时间函数来识别 'Date' 列中的值,并让我知道 'Week' 中相应的星期开始列。

我在将下面创建的函数合并到 Pandas 数据框时遇到困难:

    def week(rawdate):
        dt = datetime.strptime(rawdate, '%m/%d/%Y')
        currentweekstart = dt - timedelta(days = dt.weekday())
        currentweekstart2 = currentweekstart.strftime('%m/%d/%Y')
        currentweekmonth = currentweekstart.strftime('%m')
        currentweekfinish = currentweekstart + timedelta(days = 6)
        currentweekfinish2 = currentweekfinish.strftime('%m/%d/%Y')
        currentweekfinishmonth = currentweekfinish.strftime('%m')

        if dt.strftime('%m') == currentweekmonth:
            currentweekstart2 
            return currentweekstart2

        else: #start date is the 1st date of new month week
            nextweekstart = datetime.strptime(currentweekfinish.strftime('%m/1/%Y'), '%m/%d/%Y')
            nextweekstart2 = nextweekstart.strftime('%m/%d/%Y')
            return nextweekstart2

如有任何帮助,我们将不胜感激!

编辑:使用修改后的变量更新函数

假设您对函数 week(rawdate) 的逻辑是正确的,您可以使用 series.apply 函数将函数应用于一个系列中的所有值(pandas 列),这returns 一个新系列,您可以将其分配给新的 pandas 列。

例子-

df['Week'] = df['Date'].apply(week)

我在函数中看到的一些问题 -

  1. weekstart 未定义(在 else 部分返回)。

  2. 也在 if 部分你正在做 - currentweekstart2 - 这是无操作