首页 > 解决方案 > Python 分钟到 HH:MM 转换

问题描述

我正在尝试确定将一列添加到我的 pandas 数据框中的最佳方法,该列将总分钟数(采用 int 格式)转换为 HH:MM 格式。我知道最简单的方法是使用日期时间,但我似乎无法找出将数据从系列转换为实现这一目标的最佳方法。

这是错误消息:

TypeError: unsupported type for timedelta minutes component: Series

代码(例如 346.0):

df['minutes_asleep_hm'] = str(timedelta(minutes=df['minutes_asleep']))[:-3]

类型:

Name: minutes_asleep, dtype: float64

标签: pythonpandasdatetime

解决方案


系列本质上是一个值列表。您需要使用map函数,它将给定的操作应用于系列中的每个元素,并将此函数的结果作为系列返回。

df['minutes_asleep_hm'] = df['minutes_asleep'].map(lambda x: str(timedelta(minutes=x))[:-3], na_action='ignore')

笔记:

  1. 变量x,虽然没有描述性,但对于 lambdas 来说是相当标准的,在这里用于保持行短。它表示函数正在操作的当前序列值。
  2. 不需要 lambda。任何标准函数都可以,但使用了 lambda,因为它相当标准并且是一种方便的单行。

推荐阅读