Python 如何将两个datetime列合并为一个?熊猫蟒蛇

Python 如何将两个datetime列合并为一个?熊猫蟒蛇,python,pandas,dataframe,datetime,Python,Pandas,Dataframe,Datetime,我想要两个转换两列开始和结束: 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

我想要两个转换两列开始和结束:

                         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
但目前我找不到将两列“开始”和“结束”合并为一列的解决方案

谢谢你抽出时间

使用
numpy.where()

如果空值
NaN
是字符串,则将其用作条件。

使用and:

[外]


只是把它改成了stack,意识到它和你做的一样:-)@Yatu,我做了和你完全一样的事情,先尝试了
melt
dropna
,但不喜欢订购:)哇@Chris a。。。你能解释一下你的密码吗。对我来说就像魔术一样,
stack
,只是将数据帧中的所有列压缩为一个系列,原始列标题形成一个
多索引。我在这里使用了
rename\u axis
,这样当我们
reset\u index
时,“index name”将带到列名(在本例中为标志)。这里的reset_index只是将单个系列转换回数据帧-将索引级别移动到列中。此方法的
rename
参数作为列名(本例中为时间戳)传递。希望helps@ChrisA为什么使用stack()时,行数会增加?谢谢你的帮助。所以我的问题是,由于stack()的原因,结果不同,如何检查我是否拥有所有数据?
df['Timestamp'] = np.where(df['begin'].isna(), df['end'], df['begin'])
df['flag'] = np.where(df['begin'].isna(), ['end'],['begin'])
(df.stack()
 .rename_axis([None, 'Flag'])
 .reset_index(level=1, name='Timestamp'))
    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