【发布时间】:2021-09-22 07:34:18
【问题描述】:
我有一个 datetime.time 对象为 02:00:00 我想将它转换为总秒数,应该是 7200 秒。
【问题讨论】:
-
pandas标签是怎么回事,您能否澄清一下这是否是 pandas 特有的?
标签: python pandas datetime timedelta
我有一个 datetime.time 对象为 02:00:00 我想将它转换为总秒数,应该是 7200 秒。
【问题讨论】:
pandas 标签是怎么回事,您能否澄清一下这是否是 pandas 特有的?
标签: python pandas datetime timedelta
您可以将时间与参考日期结合起来以获取日期时间对象。如果然后减去该参考日期,您将得到一个 timedelta 对象,您可以从中获取total_seconds:
from datetime import datetime, time
t = time(2,0,0)
ts = (datetime.combine(datetime.min, t) - datetime.min).total_seconds()
print(ts)
# 7200.0
使用pandas,我将使用时间对象列(系列)的字符串表示并将其转换为 timedelta 数据类型 - 然后您可以使用dt 访问器来获取总秒数:
import pandas as pd
df = pd.DataFrame({'time': [time(2,0,0)]})
df['totalseconds'] = pd.to_timedelta(df['time'].astype(str)).dt.total_seconds()
# df['totalseconds']
# 0 7200.0
# Name: totalseconds, dtype: float64
【讨论】:
试试这个方法;参数“时间”必须采用 hh:mm:ss 格式
def convert_to_seconds(time):
# Separate all symbols of 'time'
separated = list(time)
# Delete all ':' symbols
for i in separated:
if i == ':':
separated.remove(i)
# Join the elements of the list together two by two
separated[0] = separated[0] + separated[1]
separated[1] = separated[2] + separated[3]
separated[2] = separated[4] + separated[5]
# Delete the last 3 elements of the list that are useless now
for count in range(3):
del l[3]
# Convert to integers
for i in separated:
separated[separated.index(i)] = int(i)
# Calculate seconds
seconds = 0
seconds += separated[0] * 3600
seconds += separated[1] * 60
seconds += separated[2]
return seconds
和之前的方法相比有点长,但是理解起来更简单一些。
【讨论】:
您可以使用日期时间库进行计算
def time_in_ms():
from datetime import datetime
now = datetime.now()
time_arr = now.strftime("%H:%M:%S").split(":")
total_time = (int(time_arr[0]) * 3600) + (int(time_arr[1]) * 60) +(int(time_arr[2]))
return total_time
【讨论】: