pandas pivot_table, проблема с aggfunc
Я преобразую кадр данных pandas из 4 измерений в 2 измерения:
data = data.pivot_table(index = 'TIMESTAMP', columns = ['DEVICE','READING'], values = 'VALUE', aggfunc=lambda x: ' '.join(x))
Что приводит к множественному индексу панд df. На следующем шаге я преобразую это в реальный 2D-фрейм данных:
data.columns = ['.'.join(col).strip() for col in data.columns.values]
Проблема в том, что df, который я делаю, не соответствует моим ожиданиям. Есть ячейки, которые содержат значения из разных ячеек. Например:
Есть ячейка, содержащая значение "on off on", но должно быть только "on". Причиной этого, по-видимому, являются ячейки, которые содержат строки с пробелами типа "25 30 45", и я думаю, они заставляют все смещаться каким-то образом. Я пытался удалить их с data.replace(regex={'\s':''})
но это не помогло. Он просто изменил значение "включено-выключено" на "включено", если обработано после сводной таблицы. Значение "вкл. Вкл. Вкл." Не соответствует исходному значению Это связано с df.pivot_table(, aggfunc = lambda:x ' '.join(x))
потому что я могу опустить data.colums и получить ту же проблему.
Оригинальный df имеет структуру:
<TIMESTAMP><DEVICE><READING><STATE>
<2018-10-14 10:45:00><Light1><power><25>
<2018-10-14 10:45:00><Light2><rssi><5>
<2018-10-15 11:00:00><Light1><power><off>
...
с отметками времени, возникающими несколько раз, и значением состояния может быть что угодно: от простых чисел с плавающей точкой до строк с пробелами. Конечный df должен быть:
< ><Light1.power><Light2.rssi>
<2018-10-14 10:45:00> <25> <5>
<2018-10-15 11:00:00> <off> <NaN>
УСТРОЙСТВА и ЧТЕНИЯ не имеют пробелов в своих именах. Помимо моей идеи с пробелами, это также может быть вызвано несколькими одинаковыми временными метками. В этом случае есть ли способ опустить эту проблему?
печать ('Fabian')