Разделение большого информационного кадра при скачке временной метки - PullRequest
0 голосов
/ 11 октября 2019

У меня большой массив данных с датой и временем в виде индексов и различными датчиками в виде столбцов. Датчики измеряют различные величины с частотой дискретизации 1 секунда

                         sensor1  sensor2   sensor3 
timestamp
2017-12-03 16:13:01        20        4465     156      
2017-12-03 16:13:02        20        4466     158
2017-12-03 16:13:03        20        4466     158
.
.
2017-12-03 16:45:05        30        4468     178
2017-12-03 16:45:06        30        4468     178     <I want to split the dataframe at jumps in
2017-12-03 18:00:00        20        4141      89     time like here.
2017-12-03 18:00:01        22        4321      90
2017-12-03 18:00:02        22        4321      90

Я хочу разделить большой кадр данных на меньшие кадры данных всякий раз, когда обнаруживается скачок во времени. Или, другими словами, я хотел бы разделить фрейм данных, когда следующий временной шаг больше, чем одна секунда спустя.

1 Ответ

2 голосов
/ 11 октября 2019

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

df['groups'] = (df.index.to_series().diff().dt.seconds > 1).cumsum()

#                      sensor1  sensor2  sensor3  groups
# timestamp                                             
# 2017-12-03 16:13:01       20     4465      156       0
# 2017-12-03 16:13:02       20     4466      158       0
# 2017-12-03 16:13:03       20     4466      158       0
# 2017-12-03 16:45:05       30     4468      178       1
# 2017-12-03 16:45:06       30     4468      178       1
# 2017-12-03 18:00:00       20     4141       89       2
# 2017-12-03 18:00:01       22     4321       90       2
# 2017-12-03 18:00:02       22     4321       90       2

, затем groupby этого нового столбца:

for ct, data in df.groupby('groups'):
    print(ct, data.drop(columns=['groups']))

# 0                      sensor1  sensor2  sensor3
# timestamp                                     
# 2017-12-03 16:13:01       20     4465      156
# 2017-12-03 16:13:02       20     4466      158
# 2017-12-03 16:13:03       20     4466      158

# 1                      sensor1  sensor2  sensor3
# timestamp                                     
# 2017-12-03 16:45:05       30     4468      178
# 2017-12-03 16:45:06       30     4468      178

# 2                      sensor1  sensor2  sensor3
# timestamp                                     
# 2017-12-03 18:00:00       20     4141       89
# 2017-12-03 18:00:01       22     4321       90
# 2017-12-03 18:00:02       22     4321       90
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...