假设我有一个具有与时间相关的列"time"的Python DataFrame.在该列中有表示分钟和秒的字符串.例如,第一行值125:19表示125分19秒.它的数据类型是一个字符串.

我想在一个新的列"Time_Minents"中将该值转换为总分钟数.因此,125:19应该变成125.316666666667,它应该是浮点数据类型.

同样,如果值为0:00,则相应的"time_minins"列应该显示0(浮点型数据类型).

我已经使用lambdas和索引函数在SQL中做到了这一点.但是,有没有一种更简单/更直接的方法来实现这一点呢?

推荐答案

一种可能的解决方案是,使用.str.split:

df["Converted"] = (s := df["Time"].str.split(":")).str[0].astype(float) + (s.str[1].astype(float) / 60)
print(df)

打印:

     Time   Converted
0  125:19  125.316667
1    0:00    0.000000
2    0:30    0.500000

Python相关问答推荐

Python-Polars:如何用两个值的平均值填充NA?

如何将自动创建的代码转换为类而不是字符串?

根据多列和一些条件创建新列

如何使用bs 4从元素中提取文本

是什么导致对Python脚本的jQuery Ajax调用引发500错误?

Python中MongoDB的BSON时间戳

无法使用equals_html从网址获取全文

理解Python的二分库:澄清bisect_left的使用

使用SciPy进行曲线匹配未能给出正确的匹配

SQLGory-file包FilField不允许提供自定义文件名,自动将文件保存为未命名

对某些列的总数进行民意调查,但不单独列出每列

. str.替换pandas.series的方法未按预期工作

为什么默认情况下所有Python类都是可调用的?

修复mypy错误-赋值中的类型不兼容(表达式具有类型xxx,变量具有类型yyy)

如何请求使用Python将文件下载到带有登录名的门户网站?

计算每个IP的平均值

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

如何合并两个列表,并获得每个索引值最高的列表名称?

CommandeError:模块numba没有属性generated_jit''''

LocaleError:模块keras._' tf_keras. keras没有属性__internal_'''