Я хотел бы создать новый столбец отметки времени с этим фреймом данных:
Timestamp Flag
0 2019-10-21 07:48:28.272688 end
1 2019-10-21 07:48:28.449916 end
2 2019-10-21 07:48:26.740378 begin
3 2019-10-21 07:48:26.923764 begin
4 2019-10-21 07:48:41.689466 end
5 2019-10-21 07:48:37.306045 begin
6 2019-10-21 07:58:00.774449 end
7 2019-10-21 07:57:59.223986 begin
8 2019-10-21 08:32:37.004455 end
9 2019-10-21 08:32:35.755252 begin
Принцип прост:
- Счетчик начинается с 0
Для каждой строки, если у меня есть конец => счетчик + = 1 еще (у меня есть начало) => счетчик - = 1
Когда счетчик == 0 => сохранить идентификатор метки времени в списке
- Когда счетчик = 0, следующая строка должна быть сохранена
- Когда l oop имеет конечное значение sh, заполните новое column 'New_Timestamp со значениями, соответствующими id столбца Timestamp.
Таким образом, результат должен быть:
Timestamp Flag
0 2019-10-21 07:48:28.272688 end
2 2019-10-21 07:48:26.740378 begin
3 2019-10-21 07:48:26.923764 begin
4 2019-10-21 07:48:41.689466 end
5 2019-10-21 07:48:37.306045 begin
6 2019-10-21 07:58:00.774449 end
7 2019-10-21 07:57:59.223986 begin
8 2019-10-21 08:32:37.004455 end
9 2019-10-21 08:32:35.755252 begin
Потому что: First end => counter = 1 (сохранить (первая строка), ct = 2, ct = 1 (сохранить), ct = 0 (сохранить), (сохранить) ct = 1; ct = 0 (сохранить) ...
В настоящее время я могу Не добавляйте соответствующие значения в идентификаторы, и, возможно, я забыл (а) условие (я) в своем коде.
Мой код:
counter = 0
i = 0
while i < len(df):
id_timestamp_to_save = []
if df.loc[i, 'Flag'] == 'end':
counter +=1
if counter == 1:
id_timestamp_to_save = list(range(i))
else:
counter -=1
if counter == 0:
id_timestamp_to_save = list(range(i))
df['New_Timestamp'] = df['New_Timestamp'].assign(id_timestamp_to_save)
i+=1
Помогите мне, пожалуйста.