python - 将文本列拆分为 min:sec
问题描述
我在 dataframe 中有一个时间详细信息作为文本。
dict1={'time' : ['2 min 19 sec','2 min 43 sec','1 min 33 sec','32 sec','40 sec','22 sec']}
df=pd.DataFrame(dict1)
time
0 2 min 19 sec
1 2 min 43 sec
2 1 min 33 sec
3 32 sec
4 40 sec
5 22 sec
我希望输出生成为
time updtime
0 2 min 19 sec 2:19
1 2 min 43 sec 2:43
2 1 min 33 sec 1:33
3 32 sec 0:32
4 40 sec 0:40
5 22 sec 0:22
我尝试分割时间,但我在数据对齐方面遇到了问题。
df['time'].str.split("min", n =2, expand = True)
输出:
0 1
-------------------
0 2 19 sec
1 2 43 sec
2 1 33 sec
3 32 sec None
4 40 sec None
5 22 sec None
第 3,4,5 行的值应该列在第二列,但它列在第一列,因此我无法加入这两列。任何人都可以分享您的想法如何执行此操作。
解决方案
首先,我将列的格式更改为与数据类型相似DateTime
并将字符串化为预期的格式
>>> df['time'] = df.time.apply(lambda x: f'0 min {x}'if 'min' not in x else x)
>>> df['uptime'] = pd.to_datetime(df.time, format='%M min %S sec').dt.strftime('%M:%S')
输出:
>>> df
time uptime
0 2 min 19 sec 02:19
1 2 min 43 sec 02:43
2 1 min 33 sec 01:33
3 0 min 32 sec 00:32
4 0 min 40 sec 00:40
5 0 min 22 sec 00:22
推荐阅读
- c# - Ef Core 一对多与连接表
- javascript - javascript 中的三元条件未选择按钮单选
- android-viewpager2 - 与 viewpager2 和异步 diffutilities 一起使用时,Recyclerview 未显示正确的值
- shell - 通过 shell 命令在 Make 中分配宏值
- python-3.x - 弹出 Flask 应用程序上下文时出错
- mysql - 将 MySQL 从 5.7.18 升级到 5.7.30 时,遇到错误
- c++ - 向量中的 Gcov 分支::push_back 函数调用
- node.js - 为什么在 nodejs 中设置不同的键时所有对象键值都设置为相同的值?
- php - 是否有函数也暂停 php 代码执行而不是 sleep()?
- javascript - 拒绝应用样式,因为它的 MIME 类型('text/html')不是受支持的样式表类型