Проблема
У меня есть несколько огромных информационных кадров, извлеченных из оборудования, которые отслеживают многократные запуски на указанном оборудовании, каждый из которых записывает несколько датчиков (напряжение, ток, об / мин, давление ... и т. Д.) Мне нужно расширить этонабор данных для построения графика и дальнейшего анализа, но, к сожалению, часы на датчиках не синхронизированы, поэтому разные параметры собираются каждый со своей собственной отметкой времени и могут различаться по длине (мсек, поэтому иногда> 10 строк).
Я попытался расстегнуть:
df.set_index(['index','start_time','param']).value.unstack().rename_axis(None, 1).reset_index()
Поворот:
df.pivot_table(values = 'value', index = ['index','start_time'], columns = 'param')
, но разная длина вызывает реалпроблемы (по понятным причинам).
У меня есть код для преобразования на основе даты (т. е. отдельного прогона) или параметра в словарь dfs, и я могу выполнить анализ каждого прогона или параметра - но есть~ 100 датчиков и 18 месяцев работы (!), Поэтому я хотел бы убедиться, что нет способа сделать то, что я хочу ... что я думаю, что-то вроде внешнего соединения.Из-за различий в длинах необходимо заполнить пробелы NaN - это нормально - и найти максимальную длину любого параметра, чтобы настроить длину даты на.
Набор данных модели
Начало
df_long = pd.DataFrame({"Date" : np.array([1]*5 + [2]*3 + [3]*4 + [4]*2 + [5]*4),
"Param" : list('aaabbabbabccaaaacc'),
"value": [0.1, 0.2, 0.2, 1, 4, 0.6, 0.5, 90, 0.9, 8.8, 4.1, 0.4, 0.5, 0.1, 0.1, 0.3, 3.4, 5.1],
"time" : [1,2,3,1,2,1,1,2,1,1,1,2,1,2,1,2,1,2]
})
Идеальный вывод
df_wide = pd.DataFrame ({
"Date" : [1,1,1,2,2,3,3,4,4,5,5],
"a": [0.1,0.2,0.2,0.6,'NaN',0.9,'NaN',0.5,0.1,0.1,0.3],
"time-a": [1,2,3,1,'NaN',1,'NaN',1,2,1,2],
"b": [1,4,'NaN',0.5,90,8.8,'NaN','NaN','NaN','NaN','NaN'],
"time-b": [1,2,'NaN', 1,2,1,'NaN','NaN','NaN','NaN','NaN'],
"c": ['NaN','NaN','NaN','NaN','NaN',4.1,0.4,'NaN','NaN',3.4,5.1],
"time-c": ['NaN','NaN','NaN','NaN','NaN',1,2,'NaN','NaN',1,2]})
Любая помощь с благодарностью