Python 如何将包含混合时间和日期时间值的列转换为just datetime(或just time)?
以下是专栏Python 如何将包含混合时间和日期时间值的列转换为just datetime(或just time)?,python,pandas,datetime,Python,Pandas,Datetime,以下是专栏 Time CloseTime 17 09:30:00 2019-04-22 09:32:00 27 09:30:00 2019-05-13 09:32:00 36 09:30:00 15:15:00 37 09:30:00 15:15:00 44 09:30:00 2019-05-24 09:32:00 76 09:30:00 2019-06-07 09:32:00 92 09:30:00
Time CloseTime
17 09:30:00 2019-04-22 09:32:00
27 09:30:00 2019-05-13 09:32:00
36 09:30:00 15:15:00
37 09:30:00 15:15:00
44 09:30:00 2019-05-24 09:32:00
76 09:30:00 2019-06-07 09:32:00
92 09:30:00 2019-06-17 09:32:00
目前两列的dtype
都是O
我想将这两列转换为time
,以便比较(减去)它们
我试过:
df['CloseTime'] = pd.to_datetime(df['CloseTime'])
关闭时,您需要将两个列转换为TimeDelta,第二个是删除的日期,以便以后继续:
df['Time'] = pd.to_timedelta(df['Time']. astype(str))
df['CloseTime'] = pd.to_timedelta(df['CloseTime'].str.split().str[-1])
#e.g. subtract columns
df['diff'] = df['CloseTime'].sub(df['Time'])
print (df)
Time CloseTime diff
17 09:30:00 09:32:00 00:02:00
27 09:30:00 09:32:00 00:02:00
36 09:30:00 15:15:00 05:45:00
37 09:30:00 15:15:00 05:45:00
44 09:30:00 09:32:00 00:02:00
76 09:30:00 09:32:00 00:02:00
92 09:30:00 09:32:00 00:02:00
关闭时,您需要将两个列转换为TimeDelta,第二个是删除的日期,以便以后继续:
df['Time'] = pd.to_timedelta(df['Time']. astype(str))
df['CloseTime'] = pd.to_timedelta(df['CloseTime'].str.split().str[-1])
#e.g. subtract columns
df['diff'] = df['CloseTime'].sub(df['Time'])
print (df)
Time CloseTime diff
17 09:30:00 09:32:00 00:02:00
27 09:30:00 09:32:00 00:02:00
36 09:30:00 15:15:00 05:45:00
37 09:30:00 15:15:00 05:45:00
44 09:30:00 09:32:00 00:02:00
76 09:30:00 09:32:00 00:02:00
92 09:30:00 09:32:00 00:02:00
映射到
+到_timedelta
我玩得很开心
x = pd.to_datetime(df['CloseTime']).dt.time.astype(str)
y = df['Time'].astype(str)
# convert `x` and `y` to `timedelta`, then subtract
df['diff'] = pd.Series.sub(*map(pd.to_timedelta, (x, y)))
df
Time CloseTime diff
17 09:30:00 2019-04-22 09:32:00 00:02:00
27 09:30:00 2019-05-13 09:32:00 00:02:00
36 09:30:00 15:15:00 05:45:00
37 09:30:00 15:15:00 05:45:00
44 09:30:00 2019-05-24 09:32:00 00:02:00
76 09:30:00 2019-06-07 09:32:00 00:02:00
92 09:30:00 2019-06-17 09:32:00 00:02:00
映射到
+到_timedelta
我玩得很开心
x = pd.to_datetime(df['CloseTime']).dt.time.astype(str)
y = df['Time'].astype(str)
# convert `x` and `y` to `timedelta`, then subtract
df['diff'] = pd.Series.sub(*map(pd.to_timedelta, (x, y)))
df
Time CloseTime diff
17 09:30:00 2019-04-22 09:32:00 00:02:00
27 09:30:00 2019-05-13 09:32:00 00:02:00
36 09:30:00 15:15:00 05:45:00
37 09:30:00 15:15:00 05:45:00
44 09:30:00 2019-05-24 09:32:00 00:02:00
76 09:30:00 2019-06-07 09:32:00 00:02:00
92 09:30:00 2019-06-17 09:32:00 00:02:00
感谢Jezrael,我在尝试运行代码时遇到了以下错误:回溯>(上次的最新调用):文件“pandas/_libs/tslibs/timedeltas.pyx”,第182行,在pandas中。_libs.tslibs.timedeltas.array_到_timedelta64文件“pandas/_libs/tslibs/timedeltas.pyx”,第267行,在pandas中。_libs.tslibs.timedelta.parse_timedelta_string TypeError:datetime.time类型的对象没有len()@Sid,然后使用
df['time']=pd.to_timedelta(df['time'].astype(str))
转换为字符串。感谢Jezrael,我在尝试运行代码时出现以下错误:Traceback>(最近一次调用上次):File“pandas/_libs/tslibs/timedeltas.pyx”,pandas中的第182行。_libs.tslibs.timedeltas.array_to_timedelta64文件“pandas/_libs/tslibs/timedeltas.pyx”,pandas中的第267行。_libs.tslibs.timedeltas.parse_timedelta_字符串类型错误:“datetime”类型的对象没有len()@Sid然后使用df['time']=pd.to_timedelta(df['time'].astype(str))
用于转换为字符串。