熊猫动态日期时间周开始

安东尼·吴

我试图在我的熊猫数据框中创建一个动态日期时间函数,以识别“日期”列中的值,并让我知道“周”列中的相应星期几。

  • 起始日期始终是星期一,除非该周溢出到另一个月份
  • 如果确实溢出到另一个月份,则结束日期将是开始月份的最后一天
  • 新月的第一天将代表溢出日期的星期开始,周末仍然是星期日

我在将下面创建的功能合并到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

任何帮助,将不胜感激!

编辑:使用修订后的变量更新功能

阿南德·库玛(Anand S Kumar)

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

例子 -

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

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

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

  2. if您正在做部分中--currentweekstart2禁止操作

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章