Как переместиться на год вперед на Python - PullRequest
0 голосов
/ 10 марта 2020

Моя проблема состоит в том, чтобы перенести год на один день вперед, чтобы мои расчеты начинались с первого дня года, который предпочтительно будет понедельником. Он может игнорировать предыдущий день, например, если 1 января - воскресенье, он может игнорировать его и pu sh понедельник - 1-й день. Логика c, которую я реализовал, состоит в том, чтобы получать данные только по понедельникам, например, 1-й день недели.


X=[]
Y=[]
for item in data['Elements']:
    for sub_item in item['TimeSpans']:
        if (item['Date'].startswith("2017")):
            iso_day = datetime.datetime.strptime(item['Date'], '%Y-%m-%dT%H:%M:%S').isocalendar()       #Moving Date Logic
            if (iso_day[2] == 1):
                X.append(iso_day)
                Y.append(sub_item['Value'])

Как сделать так, чтобы это показывалось каждый день, а не в этот понедельник, при этом помня о моей вышеупомянутой годовой проблеме? условие в условии if заставляет его начинать только с понедельника. Как я могу манипулировать этим утверждением, чтобы оно начиналось с понедельника сначала, а затем извлекало данные других дней, когда они начинались с понедельника.

my json выглядит следующим образом:

{
    "SpotKey": "79",
    "SpotName": "ELIX",
    "Denomination": "eur/mwh",
    "Elements": [
      {
        "Date": "2017-01-01T00:00:00",
        "Base": 36.8696,
        "Peak": 36.0125,
        "TimeSpans": [
          {
            "TimeSpan": "00:00-01:00",
            "Value": 46.43
          },
          {
            "TimeSpan": "01:00-02:00",
            "Value": 42.43
          }
        ]
      },
      {
        "Date": "2017-01-02T00:00:00",
        "Base": 53.7413,
        "Peak": 63.0317,
        "TimeSpans": [
          {
            "TimeSpan": "00:00-01:00",
            "Value": 41.18
          },
          {
            "TimeSpan": "01:00-02:00",
            "Value": 37.34
          }
        ]
      }
    ]
}

1 Ответ

1 голос
/ 10 марта 2020

Я думаю, что вы можете найти первый понедельник года и последний день года. Затем просто сравните каждый день от json до этих дней.

Что-то вроде:

import datetime 
qyear = 2017
first_day = datetime.datetime(qyear, 1, 1)
if (first_day.weekday() == 6):
    first_day = datetime.datetime(qyear, 1, 2)
last_day = datetime.datetime(qyear, 12, 31)
if (iso_day >= first_day and  iso_day <= last_day):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...