Написана небольшая дельта-функция времени и хочу захватить результаты в виде массива - PullRequest
0 голосов
/ 11 апреля 2019

Я написал некоторый код, который принимает два списка data_dict, один из которых содержит время открытия, а другой - время закрытия.

Функция находит разницу между этими двумя значениями и возвращает цифру в часах X.X часов.

ЕСЛИ время открытия и закрытия в списках не в правильном формате (00:00:00), то функция возвращает «-1».

Это работает отлично, однако я хочу иметь возможность записывать результаты и сохранять их в виде массива.

Результаты печатаются так ...

X
Y
Z
A
X
etc...

Я очень новичок в python, и мне просто нужно руководство.

Спасибо, ребята.

opening_time_arr = data_dict['Open']
closing_time_arr = data_dict['Close']

if len(opening_time_arr) == len(closing_time_arr):
    resultTime = []
for idx, closing_time in enumerate(closing_time_arr):
    try:
        FORMAT = '%H:%M:%S'
        tdelta = datetime.strptime(closing_time, FORMAT) - datetime.strptime(opening_time_arr[idx], FORMAT)
        resultTime.append(tdelta)
        tdelta_h = tdelta.total_seconds()/3600
        print(tdelta_h)
    except ValueError:
        print('-1')

Функция возвращает

8.0
8.5
6.5
7.5

и так далее ... там около 250 записей.

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

1 Ответ

1 голос
/ 11 апреля 2019

Оливер - я думаю, вы были очень близки! Если tdelta_h - ваша продукция в часах, то это то, что вы хотите добавить к resultTime. После завершения цикла for вы можете преобразовать список в пустой массив с помощью np.array(), а затем распечатать массив, если хотите убедиться, что он выглядит нормально.

Вот как я думаю, это должно выглядеть все вместе:

import numpy as np
opening_time_arr = data_dict['Open']
closing_time_arr = data_dict['Close']

if len(opening_time_arr) == len(closing_time_arr):
    resultTime = []
for idx, closing_time in enumerate(closing_time_arr):
    try:
        FORMAT = '%H:%M:%S'
        tdelta = (datetime.strptime(closing_time, FORMAT) - datetime.strptime(opening_time_arr[idx], FORMAT))

        tdelta_h = tdelta.total_seconds()/3600
        resultTime.append(tdelta_h)

    except ValueError:
        resultTime.append(-1)

np.array(resultTime)
print(resultTime)

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...