【问题标题】:How to convert a float date to days and hours如何将浮动日期转换为天数和小时数
【发布时间】:2023-02-07 07:50:05
【问题描述】:

我有一个数据框,你可以通过运行获得它:

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')

现在我首先使用 dropna 函数删除空行,然后计算左侧 duration_time 的平均值作为 average_duration:

average_duration=df.duration_time.duration_time.dropna.mean() 

输出是 average_duration:

1.3333333333333333

我的问题是如何将结果转换为类似于:

average_duration = '1 day,8 hours'

因为 1.33 天是 1 天又 7.92 小时

【问题讨论】:

    标签: python pandas dataframe python-datetime


    【解决方案1】:

    使用,您可以使用timedelta

    td = pd.Timedelta(days=average_duration)
    ​
    d, h = td.components.days, td.components.hours
    

    输出 :

    print("average_duration:", f"{d} day(s), {h} hour(s)")
    ​
    average_duration: 1 day(s), 8 hour(s)
    

    如果您需要将结果/字符串定义为变量,请使用:

    average_duration = f"{d} day(s), {h} hour(s)"
    

    【讨论】:

      【解决方案2】:

      有第三方库可能做得更好,但定义您自己的函数是微不足道的:

      def time_passed(duration: float):
          days = int(duration)
          hours = round((duration - days) * 24)
          return f"{days} days, {hours} hours"
      
      
      print(time_passed(1.3333333333333333))
      

      这应该打印

      1 days, 8 hours
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-22
        • 2022-11-15
        • 2018-09-25
        • 1970-01-01
        • 1970-01-01
        • 2019-12-19
        相关资源
        最近更新 更多