首页 > 解决方案 > 如何在python中从日期时间到时间(HH:MM:SS)传递熊猫数据框列

问题描述

我有一个看起来像这样的df:

           date          arrival_time       departure_time
0     2021-01-16  2021-01-16 16:58:16  2021-01-16 21:02:19
1     2021-01-16  2021-01-16 22:34:04  2021-01-16 22:34:51
2     2021-01-27  2021-01-27 16:01:21  2021-01-27 16:02:22
3     2021-01-07  2021-01-07 11:57:08  2021-01-07 14:22:15
4     2021-01-07  2021-01-07 12:20:54  2021-01-07 13:41:43

date,arrival_timedeparture_timedatetime64[ns]列。我想要做的是将arrival_timedeparture_time列转换为time这种格式:HH:MM:SS. 因此,我想要的输出应该是这样的:

         date     arrival_time   departure_time 
0     2021-01-16    16:58:16      21:02:19
1     2021-01-16    22:34:04      22:34:51
2     2021-01-27    16:01:21      16:02:22
3     2021-01-07    11:57:08      14:22:15
4     2021-01-07    12:20:54      13:41:43

我试过这段代码:

df["arrival_time"] = pd.to_datetime(df['arrival_time']).dt.strftime("%H:%M:%S")
df["departure_time"] = pd.to_datetime(df['departure_time']).dt.strftime("%H:%M:%S")

我也试过这个:

df['arrival_time'] = pd.to_datetime(df['arrival_time'], format="%Y-%m-%d %H:%M:%S").dt.strftime("%H:%M:%S")

然而,这两种方法都返回一个字符串,而不是一个time对象。如果有人知道该怎么做,我将非常感谢您的帮助!!!

标签: pythonpandasdatedatetimetime

解决方案


要将值作为'datetime.time'对象获取,您可以.time像这样使用:

df["arrival_time"] = pd.to_datetime(df['arrival_time'], format="%Y-%m-%d %H:%M:%S").dt.time
df["departure_time"] = pd.to_datetime(df['departure_time'], format="%Y-%m-%d %H:%M:%S").dt.time

print(df)
print(df['departure_time'][0].__class__) # print element class

输出:

         date arrival_time departure_time
0  2021-01-16     16:58:16       21:02:19
1  2021-01-16     22:34:04       22:34:51
2  2021-01-27     16:01:21       16:02:22
3  2021-01-07     11:57:08       14:22:15
4  2021-01-07     12:20:54       13:41:43
<class 'datetime.time'>

推荐阅读