如何在python中从datetime到time(HH:MM:SS)传递数据帧列
我有一个df,看起来像这样:如何在python中从datetime到time(HH:MM:SS)传递数据帧列,python,pandas,date,datetime,time,Python,Pandas,Date,Datetime,Time,我有一个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
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_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
日期
,到达时间
和出发时间
列是datetime64[ns]
列。我要做的是将到达时间
和出发时间
列转换为时间
,格式如下:HH:MM:SS
。因此,我期望的输出应该如下所示:
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_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
对象。如果有人知道怎么做,我会非常感谢你的帮助 要获取值作为'datetime.time'
对象,可以使用.time
如下所示:
df[“到达时间”]=pd.to\u日期时间(df['arrival\u time',format=“%Y-%m-%d%H:%m:%S”).dt.time
df[“出发时间”]=pd.to_datetime(df[“出发时间”],format=“%Y-%m-%d%H:%m:%S”).dt.time
打印(df)
打印(df[‘出发时间’][0]。uuuuu类uuuu)#打印元素类
输出:
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'>
到达日期\u时间离开\u时间
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
要获取值作为'datetime.time'
对象,可以使用.time
如下所示:
df[“到达时间”]=pd.to\u日期时间(df['arrival\u time',format=“%Y-%m-%d%H:%m:%S”).dt.time
df[“出发时间”]=pd.to_datetime(df[“出发时间”],format=“%Y-%m-%d%H:%m:%S”).dt.time
打印(df)
打印(df[‘出发时间’][0]。uuuuu类uuuu)#打印元素类
输出:
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'>
到达日期\u时间离开\u时间
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
可以split()
按列拆分字符串,然后对特定于数据帧的列应用datetime
转换:
import pandas as pd
import re
import datetime as dt
# splitting strings #
df['arrival_time'] = df['arrival_time'].str.split(' ', expand=True)[1]
df['departure_time'] = df['departure_time'].str.split(' ', expand=True)[1]
# converting to specific datetime format #
df["arrival_time"] = pd.to_datetime(df['arrival_time'],format="%H:%M:%S")
df["departure_time"] = pd.to_datetime(df['departure_time'], format="%H:%M:%S")
控制台输出:
# date arrival_time departure_time
#0 2021-01-16 16:58:16 21:02:19
数据
可以
split()
按列拆分字符串,然后对特定于数据帧的列应用datetime
转换:
import pandas as pd
import re
import datetime as dt
# splitting strings #
df['arrival_time'] = df['arrival_time'].str.split(' ', expand=True)[1]
df['departure_time'] = df['departure_time'].str.split(' ', expand=True)[1]
# converting to specific datetime format #
df["arrival_time"] = pd.to_datetime(df['arrival_time'],format="%H:%M:%S")
df["departure_time"] = pd.to_datetime(df['departure_time'], format="%H:%M:%S")
控制台输出:
# date arrival_time departure_time
#0 2021-01-16 16:58:16 21:02:19
数据
使用
timedelta
可能更容易:df['arrival\u time']=df['arrival\u time']-df['arrival\u time'].dt.normalize()timedelta
可能更容易:df['arrival\u time']=df['arrival\u time']-df['arrival\u time'.dt.normalize()
。它是一个datetime
对象,但输出与我的初始数据相同:2021-01-16 16:58:16
,即不是我想要的输出。@brenda了解您的要求,我已经更新了答案。这有帮助吗?其实没有,在执行df.info()时,我得到了一个对象类型:(@brenda trydf['deparation\u time'][0].\uuuu class\uuuuu
它返回的是
它不是您需要的吗?对不起,您完全正确!谢谢。它是日期时间
对象,但输出与我的初始数据相同:2021-01-16 16 16:58:16
,也就是说,不是我想要的输出。@brenda了解您的要求,我已经更新了答案。它有用吗?不太有用,当我做时ng df.info()我得到了一个对象
类型:(@brenda trydf['deparation\u time']][0]。\uuuu class\uuuuu
它返回的是
它不是你需要的吗?对不起,你完全正确!谢谢。