代码之家  ›  专栏  ›  技术社区  ›  William

pandas-python如何将持续时间转换为毫秒?

  •  -1
  • William  · 技术社区  · 2 年前

    我有一个df,您可以通过复制它并运行以下代码:

    import pandas as pd
    from io import StringIO
    
    df = """
     b_id          duration1                  duration2                          user
    
     384           28 days 21:05:16.141263     0 days 00:00:44.999706            Test
     
    """
    df= pd.read_csv(StringIO(df.strip()), sep='\s\s+', engine='python')
    df
    

    我的问题是,如何将持续时间从“28天21:05:16.141263”转换为毫秒?

    2 回复  |  直到 2 年前
        1
  •  1
  •   Bhargav    2 年前

    首先将你的持续时间1转换为 timedelta 然后转换为毫秒

    df['duration1'] = pd.to_timedelta(df['duration1'])
    df['dur1_milli'] = df['duration1'].astype(np.int64) / int(1e6)
    print(df)
    

    输出#

       b_id               duration1               duration2  user    dur1_milli
    0   384 28 days 21:05:16.141263  0 days 00:00:44.999706  Test  2.495116e+09
    

    如果你想展开它们展开

    将其添加到代码的第一行

    pd.set_option('display.float_format', lambda x: '%.3f' % x)
    

    输出#

       b_id               duration1               duration2  user     dur1_milli
    0   384 28 days 21:05:16.141263  0 days 00:00:44.999706  Test 2495116141.263
    
        2
  •  1
  •   lhopital    2 年前

    试试这个

    df['duration1'].map(lambda x: pd.to_timedelta(x).total_seconds() * 1e3)