如何将Pandas计算的浮点型时长转换为天和小时格式
将日均时长数值转换为“X天,Y小时”格式
数据准备与平均值计算
首先通过以下代码生成DataFrame并计算去除空值后的duration_time平均值:
import pandas as pd from io import StringIO df = """ case_id duration_time other_column 3456 1 random value 1 7891 3 ddd 1245 0 fdf 9073 null 111 """ df= pd.read_csv(StringIO(df.strip()), sep='\s\s+', engine='python') # 计算去除空值后的平均值 average_duration = df.duration_time.dropna().mean() # 计算结果:1.3333333333333333
问题
如何将上述浮点数值结果转换为类似 average_duration = '1天,8小时' 的中文格式?(注:1.33天约等于1天7.92小时)
解决方案
通过拆分天数和小时数,再格式化字符串即可实现:
步骤1:拆分天数与小时数
- 提取数值的整数部分作为完整天数
- 将小数部分乘以24(1天=24小时)得到小时数,可根据需求选择四舍五入或直接取整
步骤2:格式化输出
编写代码实现格式转换:
days = int(average_duration) # 四舍五入计算小时数,若需直接取整可替换为 int((average_duration - days)*24) hours = round((average_duration - days) * 24) # 根据天数和小时数生成对应格式 if days > 0 and hours > 0: formatted_duration = f"{days}天,{hours}小时" elif days > 0: formatted_duration = f"{days}天" elif hours > 0: formatted_duration = f"{hours}小时" else: formatted_duration = "0小时" print(f"average_duration = '{formatted_duration}'")
针对示例中的计算结果,运行代码后会输出:
average_duration = '1天,8小时'
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

