У меня есть данные ниже:
import pandas as pd
data = {'origin': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
'destination': [2, 2, 2, 2, 2, 2, 3, 3, 3, 3],
'set': [1, 1, 1, 2, 2, 2, 1, 1, 1, 1],
'pointA': [1, 11, 12, 1, 11, 13, 1, 16, 17, 18],
'pointB': [11, 12, 2, 11, 13, 2, 16, 17, 18, 3],
'time': [5, 6, 5, 5, 5, 7, 8, 7, 3, 4]}
datainput = pd.DataFrame(data, columns = ['origin','destination','set', 'pointA', 'pointB', 'time'])
, который выглядит примерно так:
origin destination set pointA pointB time
1 2 1 1 11 5
1 2 1 11 12 6
1 2 1 12 2 5
1 2 2 1 11 5
1 2 2 11 13 5
1 2 2 13 2 7
1 3 1 1 16 8
1 3 1 16 17 7
1 3 1 17 18 3
1 3 1 18 3 4
Я бы хотел объединить столбцы pointA и pointB в серию точек при суммированиивремя, т. е. наличие по одной строке для каждого уникального [источника, назначения, набора], поэтому желаемый вывод будет выглядеть примерно так:
origin destination set point1 point2 point3 point4 point5 time
1 2 1 1 11 12 2 0 16
1 2 2 1 11 13 2 0 17
1 3 1 1 16 17 18 3 22
Для начала я попробовал функцию pivot, как показано ниже:
pivot = datainput.pivot_table(index=['origin', 'destination', 'set'], values=['time'], aggfunc='sum').reset_index()
Это может дать мне сумму времени для уникального [источник, пункт назначения, набор]. Однако я изо всех сил пытаюсь добавить точку А и точку В к изображению, являющемуся точкой 1, точкой 2 и т. Д.
Я исследовал потенциал транспонирования:
transposedData = datainput.T
Но это простотранспонирует фрейм данных, заканчивающийся тем, что множество [origin, destination, set] преобразуется в столбцы. также трудно работать с заданным количеством максимальных точек для уникального [origin, destination, set], также неизвестно, здесь я использую 5 для выборки данных, однако, мой входной файл будет массивным, и я неНе знаю, какое максимальное число.
Есть идеи, как это сделать? ссылки на чтения о путях также будут оценены.
Спасибо!