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
相关产品推荐
相关产品推荐

