首页 > 解决方案 > 将 HH:MM:SS AM/PM OBJECT 列转换为 SECONDS

问题描述

我有一个对象类型列,时间格式为 HH:MM:SS AM/PM。我需要的输出是一个将时间对象列转换为秒的列。

例如:

import pandas as pd
df={'time_col':['10:10:10 PM','02:00:05 AM'],'time_seconds':[72610,7205]}
df2=pd.DataFrame(df)

我尝试了不同的方法。但是,它将 1900-01-01 添加到某些行而不是某些行。

标签: pythonpandasdataframedatetimetime

解决方案


将时间字符串转换为datetime(考虑 AM/PM),获取时间组件的字符串(忽略日期),然后将其转换为timedelta. 现在您可以提取秒数。

df = pd.DataFrame({'time_col':['10:10:10 PM','02:00:05 AM']})

# make sure we have time objects
df['time_col'] = pd.to_datetime(df['time_col']).dt.time

# time column to string, then to timedelta and extract seconds from that
df['time_seconds'] = pd.to_timedelta(df['time_col'].astype(str)).dt.total_seconds()

df['time_seconds']
0    79810.0
1     7205.0
Name: time_seconds, dtype: float64

推荐阅读