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