How to merge two datetime column in one ? Pandas Python

Viewed 216

I would like two transform two columns begin and end:

                         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

into one column timestamp with an other column flag :

                     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

But at the moment I can't find a solution to merge the two column begin and end into one.

Thank you for your time !

2 Answers

Use numpy.where():

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

If your null value NaN is a string instead, use it as your condition.

Use stack and 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
Related