Разделить имена столбцов и создать новый столбец из данных в имени столбца - PullRequest
3 голосов
/ 16 марта 2019

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

Timestamp           1014.temperature    1014.humidity   1015.temperature    1015.humidity   1016.temperature    1016.humidity
2017-10-01 00:00:00 11.396667           92.440806       10.513333      92.204295            11.040000            92.959605  

SensorID задается 4-значным числом перед точкой в ​​каждом столбце. Timestamp индексирует данные. Данные продолжаются для нескольких дополнительных меток времени и идентификаторов датчиков.

Что я могу сделать, чтобы получить SensorID в каждом столбце, чтобы создать новый столбец, чтобы мой фрейм данных выглядел следующим образом:

Timestamp            SensorID Temperature   Humidity
2017-10-01 00:00:00  1014     11.396667     92.440806
2017-10-01 00:00:00  1015     10.513333     92.204295
2017-10-01 00:00:00  1016     11.040000     92.959605

Спасибо.

1 Ответ

5 голосов
/ 16 марта 2019

Первый str.split для MultiIndex в столбцах и измените его на DataFrame.stack с первым уровнем, последний DataFrame.reset_index с rename:

#if Timestamp is column
#df = df.set_index('Timestamp')

df.columns = df.columns.str.split('.', expand=True)
df = df.stack(level=0).reset_index().rename(columns={'level_1':'SensorID'})
print (df)
             Timestamp SensorID   humidity  temperature
0  2017-10-01 00:00:00     1014  92.440806    11.396667
1  2017-10-01 00:00:00     1015  92.204295    10.513333
2  2017-10-01 00:00:00     1016  92.959605    11.040000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...