python - 删除 pandas 中 min 和 sec 中的十进制值
问题描述
我有一个数据框
dict1={'time' : ['2 min 19 sec','2 min 43 sec','1 min 33 sec','32 sec','40 sec','22 sec','2.3
sec','3.2 min 13 sec','4.9 min 7.6 sec']}
df=pd.DataFrame(dict1)
df
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
6 2.3 sec
7 3.2 min 13 sec
8 4.9 min 7.6 sec
我需要按如下方式生成输出,以便将 min 的十进制值添加到 sec 并删除 sec 的十进制值
time
0 2 min 19 sec
1 2 min 43 sec
2 1 min 33 sec
3 0 min 32 sec
4 0 min 40 sec
5 0 min 22 sec
6 0 min 2 sec
7 3 min 15 sec
8 4 min 16 sec
解决方案
尝试使用Series.str.extract
正则表达式模式来提取数值。
将 mins 的小数部分添加到 secs,然后使用列表推导来格式化所需的结果:
vals = df['time'].str.extract('^(?:(\S+?) min )?(\S+?) sec').fillna(0).astype(float)
vals[1] += vals[0].mod(1).mul(10)
df['time_corrected'] = [f'{int(m)} min {int(s)} sec' for m, s in vals.apply(tuple, axis=1)]
[出去]
time time_corrected
0 2 min 19 sec 2 min 19 sec
1 2 min 43 sec 2 min 43 sec
2 1 min 33 sec 1 min 33 sec
3 32 sec 0 min 32 sec
4 40 sec 0 min 40 sec
5 22 sec 0 min 22 sec
6 2.3 sec 0 min 2 sec
7 3.2 min 13 sec 3 min 15 sec
8 4.9 min 7.6 sec 4 min 16 sec
推荐阅读
- koa - 如何拥有可配置数量的中间件处理程序?
- javascript - 如何将 iframe 移到 div 后面?css
- ssms - 我想从我的数据中获取上一年和一个月的 ID,但结果不正确
- node.js - 考试时间表:Node js
- reactjs - SSL 证书已通过浏览器验证但无法获取
- c# - 如何在面板中的许多其他标签中找到特定标签?
- svelte - 在 SvelteKit 中动态加载 Markdown 文件
- 3d - 除了 linerender 之外,有没有办法在 Ui 内部统一绘制形状?
- docker - 在无根 docker 容器中运行 HashiCorp Vault
- php - 我的 wordpress 网站将我重定向到虚拟网站