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

Python中strptime时间格式化求助:24小时制转12小时制

解决pandas中24小时制转12小时制(带AM/PM)的问题

你的代码存在两个核心问题:

  • 循环内仅打印了原始时间值,未输出转换后的结果
  • 循环结束后newtime仅保留最后一次循环的计算结果,无法得到所有转换值

修正方案1:循环内直接输出转换结果

直接在循环中打印转换后的12小时制时间,即可得到预期输出:

from datetime import datetime

fbtimenew = facebook['fbtime'][0:2]
for times in fbtimenew:
    # 解析24小时制时间为datetime对象
    d = datetime.strptime(str(times), "%H:%M:%S")
    # 格式化为带AM/PM的12小时制
    newtime = d.strftime("%I:%M %p")
    # 打印转换后的结果
    print(newtime)

执行后会输出:

10:31 PM
10:03 PM

修正方案2:将结果存储(适合后续数据处理)

如果需要保留所有转换结果,可存入列表或直接添加为DataFrame的新列:

方式一:用列表存储结果

from datetime import datetime

fbtimenew = facebook['fbtime'][0:2]
converted_times = []
for times in fbtimenew:
    d = datetime.strptime(str(times), "%H:%M:%S")
    newtime = d.strftime("%I:%M %p")
    converted_times.append(newtime)

# 查看转换后的列表
print(converted_times)
# 将结果添加回原DataFrame
facebook.loc[0:1, 'fbtime_12h'] = converted_times

方式二:用pandas apply 高效处理(推荐)

针对DataFrame列的批量转换,apply方法比循环更简洁高效:

from datetime import datetime

def convert_to_12h(time_str):
    d = datetime.strptime(str(time_str), "%H:%M:%S")
    return d.strftime("%I:%M %p")

# 为原DataFrame添加转换后的新列
facebook['fbtime_12h'] = facebook['fbtime'].apply(convert_to_12h)
# 查看前两行的转换结果
print(facebook['fbtime_12h'][0:2])

内容的提问来源于stack exchange,提问作者vigneshwaran sr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:10:59