Member 14159099 Ответов: 1

Как я могу объединить повторяющийся элемент в списке в один выбор времени начала и окончания?


I have a dataset with columns 'Start time', 'End Time', 'Process' eg

10:00, 11:00, A

11:00, 12:00, A

12:00, 13:00, B

14:00, 15:00, C

15:00, 16:00, C

I want my output as

10:00, 12:00, A

12:00, 13:00, B

14:00, 16:00, C

If you see I have clubbed the process and corresponding start and end time are also changes to start time of first occurrence and end time of last occurrence.

Any help will be appreciated


Что я уже пробовал:

Каждая попытка будет напрасной. Я попытался разделить это на список синхронизации,

Любая помощь будет оценена по достоинству

Спасибо

1 Ответов

Рейтинг:
7

Richard MacCutchan

Вам нужно создать новый набор, а еще лучше новый набор. словарь[^], используя имя процесса в качестве ключа. Затем вы можете просмотреть свой набор данных, копируя самые ранние и самые поздние времена для каждой записи словаря.


Member 14159099

Я был бы признателен, если бы вы могли предоставить логику/код

Richard MacCutchan

Основная логика-это что-то вроде:

processdict = {}
# for each item in the existing dataset
if item.processname not in processdict: # this process not in the dictionary
    # add a new entry with the current times
    times = [item.starttime, item.endtime]
    processdict[item.processname] = times
else:
    # this process is in the dictionary

    # if the start time is earlier than the dictionary entry
    # replace it with this element's start time
    if item.starttime < processdict[item.processname].value[0]:
        processdict[item.processname].value[0] = item.starttime

    # as above but replacing with later end times
    if item.endtime > processdict[item.processname].value[1]:
        processdict[item.processname].value[1] = item.endtime

[no name]

....