Как объединить два столбца даты и времени в один? Pandas Python - PullRequest
3 голосов
/ 09 марта 2020

Мне бы хотелось, чтобы два столбца начинались и заканчивались:

                         begin                          end
0                          NaN  2019-10-21  07:48:28.272688
1                          NaN  2019-10-21  07:48:28.449916
2  2019-10-21  07:48:26.740378                          NaN
3  2019-10-21  07:48:26.923764                          NaN
4                          NaN  2019-10-21  07:48:41.689466
5  2019-10-21  07:48:37.306045                          NaN
6                          NaN  2019-10-21  07:58:00.774449
7  2019-10-21  07:57:59.223986                          NaN
8                          NaN  2019-10-21  08:32:37.004455
9  2019-10-21  08:32:35.755252                          NaN

в метку времени одного столбца с флагом другого столбца:

                     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

Но в данный момент я не могу найти решение для объединения двух столбцов, начинающихся и заканчивающихся в один.

Спасибо за потраченное время!

Ответы [ 2 ]

2 голосов
/ 09 марта 2020

Использование stack и reset_index:

(df.stack()
 .rename_axis([None, 'Flag'])
 .reset_index(level=1, name='Timestamp'))

[out]

    Flag                    Timestamp
0    end  2019-10-21  07:48:28.272688
1    end  2019-10-21  07:48:28.449916
2  begin  2019-10-21  07:48:26.740378
3  begin  2019-10-21  07:48:26.923764
4    end  2019-10-21  07:48:41.689466
5  begin  2019-10-21  07:48:37.306045
6    end  2019-10-21  07:58:00.774449
7  begin  2019-10-21  07:57:59.223986
8    end  2019-10-21  08:32:37.004455
9  begin  2019-10-21  08:32:35.755252
2 голосов
/ 09 марта 2020

Использовать numpy.where():

df['Timestamp'] = np.where(df['begin'].isna(), df['end'], df['begin'])
df['flag'] = np.where(df['begin'].isna(), ['end'],['begin'])

Если вместо этого пустое значение NaN является строкой, используйте его в качестве условия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...