如何用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
相关产品推荐
相关产品推荐

