Значения групповых строк в виде столбцов в пандах - PullRequest
2 голосов
/ 29 марта 2019

У меня есть набор данных, в котором записываются температуры устройств:

Device_ID Temperature Label
1           50          0
1           40          0
2           34          0
1           78          0
2           66          1
3           88          0
1           12          0
2           33          0
3           91          0

Устройства могут отправлять температуру в любое время. Приведенный выше набор данных уже отсортирован по времени.

Что я хочу сделать?

Классифицируйте устройства на основе их температурного режима.

У меня уже есть метки для набора данных, метки указывают, испортились ли устройства после измерения (1 означает, что после этого измерения устройство вышло из строя, 0 означает, что все в порядке). Как только метка становится «плохой», устройство теперь постоянно плохое, и мне не нужно учитывать следующие измерения для этого идентификатора.

Итак, я хочу построить классификационный набор данных как:

Device_ID  T1  T2 T3 T4 ... Tn Label

1          50 40 78 ...          0
2          34 66 .....           1 (33 measurement now does not matter)

Итак, мой вопрос как мне преобразовать значения временных рядов в строках в столбцы в Pandas? Как выполнить эту задачу эффективно ?

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

Любая помощь приветствуется.

1 Ответ

1 голос
/ 29 марта 2019

Вот один из способов сделать это.

Создать новый вспомогательный столбец col, используя groupby.cumcount и вспомогательный ряд label с максимальной меткой для каждого 'Device_ID',Затем используйте DataFrame.pivot и , присвойте ваш ряд помощников:

df['col'] = 'T' + (df.groupby('Device_ID').Temperature.cumcount() + 1).astype(str)
labels = df.groupby('Device_ID')['Label'].max()

df_new = df.pivot(index='Device_ID', columns='col', values='Temperature').assign(Label=labels)
print(df_new)

col          T1    T2    T3    T4  Label
Device_ID                               
1          50.0  40.0  78.0  12.0      0
2          34.0  66.0  33.0   NaN      1
3          88.0  91.0   NaN   NaN      0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...