【问题标题】:Convert column of seconds to hh:mm:ss - Pandas将秒列转换为 hh:mm:ss - Pandas
【发布时间】:2019-05-03 03:22:12
【问题描述】:

我确定这是在 SO 但我似乎无法找到它。我正在尝试将columnof floats 转换为timestamps,显示为hh:mm:ss。以下是我的尝试:

import pandas as pd

d = ({
    'A' : [100.4,200.2,300.3,400.6,500.8,600.9],                 
    'B' : [10.4,21.5,36.3,44.3,56.6,60.5],                                      
     })

df = pd.DataFrame(data = d)

df['A','B'] = pd.to_datetime(df['A','B'], unit='h')

预期输出:

          A         B
0  00:01:40  00:00:10
1  00:03:20  00:00:22
2  00:05:00  00:00:36
3  00:06:41  00:00:44
4  00:08:21  00:00:57
5  00:10:01  00:01:01

【问题讨论】:

  • 毫秒会发生什么?您要删除它们,还是应该保留在数据中?
  • 我之前已经将它们四舍五入了。所以一切都是.0

标签: python pandas timedelta


【解决方案1】:
import pandas as pd

d = ({
    'A' : [100.4,200.2,300.3,400.6,500.8,600.9],                 
    'B' : [10.4,21.5,36.3,44.3,56.6,60.5],                                      
     })

df = pd.DataFrame(data = d)

df['A'] = df['A'].astype('float64') 
df['B'] = df['B'].astype('float64') 

df['A'] = pd.to_datetime(df["A"], unit='s').dt.strftime("%H:%M:%S")
df['B'] = pd.to_datetime(df["B"], unit='s').dt.strftime("%H:%M:%S")

输出是:


    A           B
0   00:01:40    00:00:10
1   00:03:20    00:00:21
2   00:05:00    00:00:36
3   00:06:40    00:00:44
4   00:08:20    00:00:56
5   00:10:00    00:01:00

【讨论】:

    【解决方案2】:

    round + pd.to_timedelta,指定单位:

    df.round().apply(pd.to_timedelta, unit='s')
    
             A        B
    0 00:01:40 00:00:10
    1 00:03:20 00:00:22
    2 00:05:00 00:00:36
    3 00:06:41 00:00:44
    4 00:08:21 00:00:57
    5 00:10:01 00:01:00
    
    A    timedelta64[ns]
    B    timedelta64[ns]
    dtype: object
    

    您现在拥有 timedeltas 的功能

    【讨论】:

      【解决方案3】:

      另一种单线解决方案:

      df = df.apply(lambda x: pd.to_datetime(x, unit='s').dt.strftime('%H:%M:%S'))
      

      applypd.to_datetimedt.strftime 一起使用。

      现在:

      print(df)
      

      是:

                A         B
      0  00:01:40  00:00:10
      1  00:03:20  00:00:21
      2  00:05:00  00:00:36
      3  00:06:40  00:00:44
      4  00:08:20  00:00:56
      5  00:10:00  00:01:00
      

      【讨论】:

        猜你喜欢
        • 2018-07-11
        • 1970-01-01
        • 1970-01-01
        • 2015-05-04
        • 2011-10-30
        • 2021-02-18
        • 1970-01-01
        • 2021-05-09
        相关资源
        最近更新 更多