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

如何用f-string在Pandas中合并int分钟与float秒为指定格式列

解决Pandas合并分钟与秒列为指定格式的问题

正确实现方法

你可以使用apply结合lambda函数逐行处理每一行的分钟和秒数值,通过格式化字符串确保秒数不足两位时补零:

import pandas as pd

# 示例数据
minutes = [4, 4, 5, 5]
seconds = [49.3, 55.8, 2.9, 4.2]

new_df = pd.DataFrame()
new_df['minutes'] = minutes
new_df['seconds'] = seconds

# 生成符合格式的display_time列
new_df['display_time'] = new_df.apply(lambda x: f"{x['minutes']}:{x['seconds']:04.1f}", axis=1)

执行后display_time列的输出与预期一致:

0    4:49.3
1    4:55.8
2    5:02.9
3    5:04.2
Name: display_time, dtype: object

错误原因说明

你原代码直接用f-string包裹整个Pandas Series(new_df["minutes"]和new_df["seconds"]),这会把整个列的内容转换成字符串后拼接,而非逐行获取对应位置的数值,因此每一行的display_time都会重复整个列的内容。

另一种实现方式(无需apply)

如果想避免使用apply,可以单独对秒数列做格式化后再与分钟列拼接:

new_df['display_time'] = new_df['minutes'].astype(str) + ':' + new_df['seconds'].map(lambda s: f"{s:04.1f}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:50:07