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

如何在Pandas中合并小时与分钟列生成带小数点的时间值

合并小时与分钟列为指定数值格式的实现方法

需求是将time_fall_asleep-hour(小时数)和time_fall_asleep-minute(分钟数)两列合并,生成类似0.10(对应00:10)的数值——整数部分为小时,小数部分两位为分钟。以下是两种可行的Pandas实现方法:

方法1:直接数值计算

通过小时数加上分钟数除以100的方式生成目标数值,简单高效,适合后续需要数值计算的场景:

import pandas as pd

# 生成目标列
newerdf['sleep_time'] = newerdf['time_fall_asleep-hour'] + newerdf['time_fall_asleep-minute'] / 100

# 若需显示两位小数,设置Pandas显示格式
pd.options.display.float_format = '{:.2f}'.format

方法2:字符串拼接转数值

先将小时和分钟转为字符串并按小时.分钟格式拼接(确保分钟为两位),再转回数值类型,适合需要严格保留两位小数显示的场景:

import pandas as pd

# 生成目标列
newerdf['sleep_time'] = (
    newerdf['time_fall_asleep-hour'].astype(int).astype(str) 
    + '.' 
    + newerdf['time_fall_asleep-minute'].astype(int).apply(lambda x: f"{x:02d}")
).astype(float)

# 强制显示两位小数
pd.options.display.float_format = '{:.2f}'.format

示例验证

用你提供的样本数据测试,两种方法都会得到如下结果(以前5行为例):

索引time_fall_asleep-hourtime_fall_asleep-minutesleep_time
00.0010.000.10
12.000.002.00
26.000.006.00
30.0030.000.30
50.0010.000.10

注意事项

  • 若原数据存在非整数的小时/分钟值,需先做取整处理(如round()或astype(int)),避免小数位数混乱。
  • 方法1生成的数值在计算逻辑上等价(如2.0和2.00数值相同),仅显示格式可通过Pandas设置调整;方法2通过字符串拼接确保了小数部分的两位结构,但本质仍为浮点类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:16:27