Как создать систему планирования на основе недели года - PullRequest
1 голос
/ 20 сентября 2019

У меня есть фрейм данных со столбцами даты, дня и недели года.

Мне нужно использовать неделю года для создания нового столбца со значениями от 1 до 5.

Допустим, я на 35-й неделе, во всех столбцах с 35-й недели должен быть один, в 36-й неделе - 2 и так далее.Как только он достигнет недели 40 и числа 5, числа в новом столбце должны начинаться с 1 на неделе 41 и продолжаться в этом типе паттернов в течение сколь угодно длительного диапазона данных

def date_table(start='2019-08-26', end='2019-10-27'):
    df = pd.DataFrame({"Date": pd.date_range(start, end)})
    df["Day"] = df.Date.dt.weekday_name
    df["Week"] = df.Date.dt.weekofyear
    return df

1 Ответ

0 голосов
/ 20 сентября 2019

Рассчитать индекс по модулю и номеру недели:

import pandas as pd

start='2019-08-26'
end='2019-10-27'
df = pd.DataFrame({"Date": pd.date_range(start, end)})
df["Day"] = df.Date.dt.weekday_name
df["Week"] = df.Date.dt.weekofyear
df["idx"] = df["Week"] % 5 +1        # n % 5 = 0..4 plus 1 == 1..5 

print(df)

Вывод:

0  2019-08-26     Monday    35    1
[...]
6  2019-09-01     Sunday    35    1
7  2019-09-02     Monday    36    2
[...]
13 2019-09-08     Sunday    36    2
14 2019-09-09     Monday    37    3
[...]
20 2019-09-15     Sunday    37    3
21 2019-09-16     Monday    38    4
[...]
27 2019-09-22     Sunday    38    4
28 2019-09-23     Monday    39    5
[...]
34 2019-09-29     Sunday    39    5
35 2019-09-30     Monday    40    1
[...]

[63 rows x 4 columns]

Если вы хотите, чтобы он начинался с , а не делится на 5weeknumber - вы можете сделать это тоже, вычтя значение по модулю 5 первой недели для всех номеров недели:

# startweeknumber:
startweekmod = df["Week"][0] % 5

# offset by inital weeks mod
df["idx"] = (df["Week"] - startweekmod) % 5 + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...