You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将单元格时间值转换为时段文本?

Python实现时间到自然文本的转换

一、基于AM/PM的简单转换

如果只是简单根据时间字符串里的AM/PM标记转换,两种方法都能实现:

方法1:字符串直接判断

def time_to_simple_text(time_str):
    if 'AM' in time_str.upper():
        return 'Morning'
    elif 'PM' in time_str.upper():
        return 'Noon'
    return 'Unknown'

# 测试
start_time = '12:01:24 AM'
end_time = '11:44:53 PM'
print(time_to_simple_text(start_time))  # 输出 Morning
print(time_to_simple_text(end_time))    # 输出 Noon

方法2:用datetime解析后判断

from datetime import datetime

def time_to_simple_text(time_str):
    time_obj = datetime.strptime(time_str, '%I:%M:%S %p')
    if time_obj.hour < 12:
        return 'Morning'
    else:
        return 'Noon'

# 测试
print(time_to_simple_text('12:01:24 AM'))  # Morning
print(time_to_simple_text('11:44:53 PM'))  # Noon

二、自定义时段分组

如果需要按自定义时段(比如5:00 AM-11:59 AM归为Morning,12:00 PM-5:00 PM归为Afternoon等),可以先把时间字符串解析为datetime.time对象,再通过区间判断实现:

from datetime import datetime, time

def time_to_custom_text(time_str):
    # 解析时间字符串为time对象
    time_obj = datetime.strptime(time_str, '%I:%M:%S %p').time()
    
    # 定义自定义时段区间
    morning_start = time(5, 0, 0)
    morning_end = time(11, 59, 59)
    afternoon_start = time(12, 0, 0)
    afternoon_end = time(17, 0, 0)
    evening_start = time(17, 0, 1)
    evening_end = time(23, 59, 59)
    night_start = time(0, 0, 0)
    night_end = time(4, 59, 59)
    
    if morning_start <= time_obj <= morning_end:
        return 'Morning'
    elif afternoon_start <= time_obj <= afternoon_end:
        return 'Afternoon'
    elif evening_start <= time_obj <= evening_end:
        return 'Evening'
    elif night_start <= time_obj <= night_end:
        return 'Night'
    return 'Unknown'

# 测试
print(time_to_custom_text('5:00:00 AM'))    # Morning
print(time_to_custom_text('12:00:00 PM'))   # Afternoon
print(time_to_custom_text('6:00:00 PM'))    # Evening
print(time_to_custom_text('3:00:00 AM'))    # Night

如果是处理表格数据(比如pandas的DataFrame),可以直接用apply方法批量转换:

import pandas as pd

# 模拟表格数据
df = pd.DataFrame({
    'start time': ['12:01:24 AM', '5:30:00 AM'],
    'end time': ['11:44:53 PM', '4:00:00 PM']
})

# 批量添加转换后的列
df['start time_text'] = df['start time'].apply(time_to_custom_text)
df['end time_text'] = df['end time'].apply(time_to_custom_text)

print(df)

内容的提问来源于stack exchange,提问作者tran su

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 01:51:24