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

如何将DataFrame中的浮点型时间值转换为时分秒格式?

解决Pandas中浮点型时间序列转换为HH:MM:SS格式的问题

需求说明

需要将DataFrame中Occurred Time列的浮点值(如1200.0、1536.0)转换为HH:MM:SS格式的时间字符串,初始数据及代码如下:

import pandas as pd
df = pd.DataFrame([1200.0, 0.0, 1536.0, 1530.0, 0.0], columns=['Occurred Time'])
print(df)

初始输出:

Occurred Time
0         1200.0
1            0.0
2         1536.0
3         1530.0
4            0.0

错误尝试及结果

直接使用pd.to_datetime()转换时,得到了不符合预期的Unix时间戳解析结果:

import pandas as pd
df = pd.DataFrame([1200.0, 0.0, 1536.0, 1530.0, 0.0], columns=['Occurred Time'])
df['Occurred Time'] = pd.to_datetime(df['Occurred Time'])
print(df)

错误输出:

Occurred Time
0 1970-01-01 00:00:00.000001200
1 1970-01-01 00:00:00.000000000
2 1970-01-01 00:00:00.000001536
3 1970-01-01 00:00:00.000001530
4 1970-01-01 00:00:00.000000000

错误原因

pd.to_datetime()默认将数值视为Unix时间戳(从1970-01-01 00:00:00开始的纳秒数),而非我们需要的HHMM格式时间编码,因此解析出了错误的日期时间。

解决方案

以下是几种可行的转换方法:

方法1:字符串补零拆分法

先将浮点数转为4位字符串,拆分出时、分后拼接成目标格式:

import pandas as pd

df = pd.DataFrame([1200.0, 0.0, 1536.0, 1530.0, 0.0], columns=['Occurred Time'])

# 转为整数后转字符串,补零至4位
df['time_str'] = df['Occurred Time'].astype(int).astype(str).str.zfill(4)
# 拆分时分并拼接为HH:MM:SS
df['Occurred Time'] = df['time_str'].str[:2] + ':' + df['time_str'].str[2:] + ':00'
# 删除中间辅助列
df = df.drop('time_str', axis=1)

print(df)

输出结果:

Occurred Time
0      12:00:00
1      00:00:00
2      15:36:00
3      15:30:00
4      00:00:00

方法2:lambda函数格式化法

用字符串格式化直接处理,代码更简洁:

import pandas as pd

df = pd.DataFrame([1200.0, 0.0, 1536.0, 1530.0, 0.0], columns=['Occurred Time'])

df['Occurred Time'] = df['Occurred Time'].astype(int).apply(
    lambda x: f"{x:04d}"[:2] + ':' + f"{x:04d}"[2:] + ':00'
)

print(df)

方法3:转为datetime对象再格式化(适合需时间运算场景)

如果后续需要对时间进行运算,可先转为datetime对象,再格式化字符串:

import pandas as pd

df = pd.DataFrame([1200.0, 0.0, 1536.0, 1530.0, 0.0], columns=['Occurred Time'])

# 解析为datetime对象
df['Occurred Time'] = pd.to_datetime(
    df['Occurred Time'].astype(int).astype(str).str.zfill(4),
    format='%H%M'
)
# 格式化为HH:MM:SS字符串
df['Occurred Time'] = df['Occurred Time'].dt.strftime('%H:%M:%S')

print(df)

内容的提问来源于stack exchange,提问作者Athina Papageorgiou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:55:13