尝试写几行代码来创建一个主日期查找表

晚上的小伙子,希望这个问题比我今年早些时候的第一个得到 -7 的问题要好!(我真的很感激,因为它有助于突出我的无知)


我想要实现的是编写一行巧妙的代码,我可以在我工作的任何数据帧中调用它以获得正确的周数或星期几。


现在,请考虑以下数据框:


import pandas as pd

import numpy as np


days = pd.date_range('01/01/2018', '01/04/2019', freq='D')

df = pd.DataFrame({'Date': days})

print(df.head(5))

    Date

0   2018-01-01

1   2018-01-02

2   2018-01-03

3   2018-01-04

4   2018-01-05

现在,我想使用以下代码行创建公司周数:


请注意,我的公司使用财务日历,所以 4 月是第 1 周,但第 1 天是星期六(精明的人可能已经知道我的问题)!所以对于 2018 年,31/03/18 实际上是我 2019 财政年度的第 1 周第 1 周,因为它是星期六,我们最多只能有 53 个星期。


df['Week'] = np.where(df['Date'].dt.month >= 4, (df['Date'] + pd.Timedelta(days=2)).dt.week - 13,

                   (df['Date'] + pd.Timedelta(days=2)).dt.week + 39)

print(df)



    Date        Week

0   2018-01-31  44

1   2018-02-01  44

2   2018-02-02  44

到目前为止一切都很好吧?


所以让我们检查十二月


dec = df.Date.dt.month == 12

print(df.loc[dec].tail(5))

    Date    Week

330 2018-12-27  39

331 2018-12-28  39

332 2018-12-29  -12

333 2018-12-30  -12

334 2018-12-31  -12

问题,如果我理解这是 pd.Timedelta 试图正确放置我的周数,但由于我的初始公式month >= 4被放置为 -12


此外,3 月 31 日应该在第 1 周而不是第 53 周作为星期六。


假设这是许多人可能已经从事过的一项非常常见的任务,有没有人有一种方法或方式以 Pythonic 的方式来处理这个问题。


我自己的解决方案是手动创建一个数据框并手动修复周、日和财政年度,放入 noSQL 或 SQL dB 并在每个 dF 中调用它并将周数合并到我的报告中。


慕工程0101907
浏览 125回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java