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

Polars如何从时间格式列中直接提取小时为整数?

Polars 直接从时间列提取小时数(无需map_rows)

当然可以!Polars对时间类型列提供了专门的.dt访问器,能直接在with_columns操作里提取小时数,比map_rows更简洁高效。

完整实现代码

import polars as pl
import numpy as np

data = np.array(['06:30', '17:45', '18:32'])
df = pl.from_numpy(data, schema=["Checkout Time"])

# 转换时间格式 + 提取小时,一步完成
df = df.with_columns(
    # 将字符串转为时间类型(覆盖原列)
    pl.col('Checkout Time').str.to_time('%H:%M').alias('Checkout Time'),
    # 直接提取小时并命名为Hour列
    pl.col('Checkout Time').str.to_time('%H:%M').dt.hour.alias('Hour')
)

# 如果已经完成时间格式转换,单独提取小时只需一行
# df = df.with_columns(pl.col('Checkout Time').dt.hour.alias('Hour'))

关键说明

  • 当列是时间类型时,通过.dt.hour可以直接获取该时间的小时数(返回整数类型)
  • 这种方式是向量化操作,比map_rows的逐行处理性能高很多,尤其在处理大数据集时差距明显
  • 代码逻辑更直观,不需要额外的lambda函数和重命名操作

对比原方法

原来的map_rows写法需要先选择列、逐行调用lambda提取小时,还要重命名结果列,而用.dt.hour只需在with_columns里添加一行即可完成,代码量更少,可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:48:15