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')

0 ответов

Другие вопросы по тегам