📅  最后修改于: 2023-12-03 14:51:28.494000             🧑  作者: Mango
在Python中,我们可以通过处理小数将其转换为时间。例如,我们可以将小数0.5转换为12:00 PM(中午12点)。下面是如何在Python中实现。
from datetime import datetime, timedelta
def decimal_to_time(decimal):
hours = int(decimal)
minutes = int((decimal - hours) * 60)
dt = datetime(2021, 1, 1, hours, minutes)
return dt.strftime("%I:%M %p")
# 示例
print(decimal_to_time(0.5)) # 输出:12:00 PM
print(decimal_to_time(1.75)) # 输出:01:45 PM
该函数将小数转换为小时和分钟,然后使用datetime
模块创建一个新的datetime
对象。最后,使用strftime()
方法将时间格式化为12小时制的时间。
如果我们希望不仅能够处理小时和分钟,而且能够处理秒数和微秒,我们可以使用dateutil
模块。
from datetime import datetime
from dateutil import relativedelta
def decimal_to_time(decimal):
rd = relativedelta.relativedelta(seconds=decimal*3600)
return datetime(2021, 1, 1) + rd
# 示例
print(decimal_to_time(0.5)) # 输出:2021-01-01 12:00:00
print(decimal_to_time(1.75)) # 输出:2021-01-01 01:45:00
该函数将小数转换为秒数,然后使用dateutil.relativedelta
计算相对时间差。最后,将相对时间差与datetime
对象相加得到新的datetime
对象。
如果我们希望能够在DataFrame中将小数转换为时间,我们可以使用pandas
模块。
import pandas as pd
from datetime import datetime, timedelta
def decimal_to_time(decimal):
base = datetime(2021, 1, 1)
delta = timedelta(hours=decimal)
return base + delta
# 示例
df = pd.DataFrame({'decimal': [0.5, 1.75]})
df['time'] = df['decimal'].apply(decimal_to_time)
print(df)
该函数将小数转换为时间差,然后将时间差与基准时间(在这里为datetime.datetime(2021, 1, 1)
)相加得到新的datetime
对象。最后,apply()
方法将该函数应用于DataFrame的decimal
列,并将结果存储在新的time
列中。
输出结果:
| | decimal | time | |---|--------|----------------------| | 0 | 0.5 | 2021-01-01 12:00:00 | | 1 | 1.75 | 2021-01-01 01:45:00 |
这是一个演示如何使用Python将小数转换为时间的简单方法。