Как добавить данные временных рядов в список временных рядов? - PullRequest
0 голосов
/ 05 июля 2019

У меня есть несколько таблиц с конкретными данными временных рядов. Я хочу суммировать эти конкретные времена в сводную таблицу с интервалами времени.

например: у нас есть итоговые диапазоны дат

  • [Dec 21, Dec 22, Dec 23] (от полуночи до полуночи).

и данные будут примерно такими:

  1. Dec 21 10:00 = 15
  2. Dec 21 11:00 = 10
  3. Dec 22 13:00 = 5
  4. Dec 22 16:00 = 10
  5. Dec 23 2:00 = 6
  6. Dec 23 12:00 = 6

Таким образом, я бы хотел, чтобы итоговое резюме было: Dec 21 = 25, Dec 22 = 15, Dec 23 = 12.

Я использую python, datetime и модуль openpyxl для доступа и создания значений времени.

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

Получить фактические даты и значения из отдельных листов легко.

for sheet in projectList:
    ws = wb[sheet]
    LOCSum = 0
    LOCList = {}
    for cols in range(8,30):
        LOCDate = ws.cell(row=4, column=cols).value #A datetime
        LOCSum = ws.cell(row=70, column=cols).value #A number
        LOCList = LocList + appendToListOfValues(LOCDate, LOCSum)
    fitListOfValuesIntoSummary(LOCList)

Как только я получу LOCDate и LOCSum, как я могу собрать их в список, который затем можно будет добавить в сводку? appendToListOfValues() функция, которая на самом деле не существует. Это должен быть словарь? кортеж?

тогда, когда у меня есть список временных рядов, как мне сделать его вписанным в сводный список? fitListOfValuesIntoSummary() функция, которая также не существует.

и последний кикер, что мне делать, если данные находятся за пределами указанных диапазонов? Должен ли я просто добавить его в диапазон «до» и «после» сводного списка?

Пожалуйста, покажите мне и некоторые литературные источники.

(Как я уже набирал этот вопрос.)

Будет ли просто автоматически добавлено найденное значение в итоговую ячейку в документах Excel?

if LOCDate >= summaryDate+1:
    summaryDate = summaryDate+1
if summaryDate <= LOCDate <= summaryDate+1:
    ws[summary]['correctCol'+'correctRow'].value = ws[summary]['correctCol'+'correctRow'].value + LOCSum

1 Ответ

0 голосов
/ 05 июля 2019

Это сработало для меня.

for sheet in projectList:
    ws = wb[sheet]
    LOCDate = 0
    LOCSum = 0
    weeklyLOCAvailCol = 7
    for cols in range(8,30):
        LOCDate = ws.cell(row=19, column=cols).value #a datetime
        LOCSum = ws.cell(row=70, column=cols).value #a number
        if LOCDate >= wb[summName].cell(row=4, column=weeklyLOCAvailCol+1).value: #check if the current values date is greater than the next slot.
            weeklyLOCAvailCol += 1 #if so, move up one slot.
        wb[summary].cell(row=LOCAvailpos, column=weeklyLOCAvailCol).value = wb[summary].cell(row=LOCAvailpos, column=weeklyLOCAvailCol).value + LOCSum
#then, add the current LOCSum value to whatever is in the current date range cell.

Так что в итоге получается, что каждая итоговая ячейка содержит текущий итог каждой ячейки каждого отдельного листа.

H70-J70 на каждом листе суммируется в H28, если H70-J70 меньше, чем первая дата-время следующего временного диапазона.и как только выясняется, что K70 больше, чем дата I28, следующий набор сохраняется в I28

Это не идеально, так как для этого требуется электронная таблица Excel, но она разбивает данныев диапазон.Если бы был способ сделать это быстрее, я думаю, что это помогло бы другим.

...