如何将pandas的timedelta数据转换为AM/PM格式时间
pandas将Timedelta列转为12小时制AM/PM格式方法
你的time列是pandas Timedelta类型,本质是时间偏移量,不需要手动拆分时分秒计算,直接叠加基准时间转datetime后格式化即可,代码可以直接复用:
import pandas as pd # 核心转换逻辑:用Unix纪元0点作为基准,叠加timedelta得到完整datetime后格式化 df['time_2'] = (pd.Timestamp(0) + df['time']).dt.strftime('%-I:%M %p')
参数说明
- 基准时间
pd.Timestamp(0)是1970-01-01 00:00:00,和timedelta叠加后只会保留你需要的时分秒部分,日期部分不会影响最终输出 - 格式化字符串各部分含义:
%-I:12小时制小时数,自动去除前导零(Windows环境请替换为%#I)%M:两位分钟数,不足自动补零%p:自动匹配AM/PM标识
效果验证
用你给出的示例数据测试,输出完全匹配预期:
time time_2 0 0 days 05:11:00 5:11 AM 1 0 days 05:12:00 5:12 AM 2 0 days 05:13:00 5:13 AM 3 0 days 05:14:00 5:14 AM 4 0 days 05:15:00 5:15 AM 5 0 days 05:16:00 5:16 AM 6 0 days 15:17:00 3:17 PM 7 0 days 15:18:00 3:18 PM 8 0 days 15:19:00 3:19 PM 9 0 days 15:20:00 3:20 PM
注意:如果你的timedelta存在超过24小时的值,上述方法会自动按24小时取模计算对应时间,如果需要标记跨天可以额外加判断逻辑处理。
内容的提问来源于stack exchange,提问作者vp_050
相关产品推荐
相关产品推荐

