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

将int64列转换为时间列

  •  0
  • PV8  · 技术社区  · 5 年前

    我有一个带有“time”列的pandas数据帧,它当前看起来像:

    ab['ZEIT'].unique()
    array([     0, 165505, 203355, ...,  73139,  75211,  74244], dtype=int64)
    

    如何使用hh:mm:ss从中获取德语时间格式,使其基本上看起来像:

    array([00:00:00, 16:55:05, 20:33:55, ..., 07:31:39, 07:52:11, 07:42:44], dtype=?)
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Zero    5 年前

    使用 pd.to_datetime 将值转换为带填充0的字符串后。那就打电话 dt time

    In [12]: pd.to_datetime(df['ZEIT'].astype(str).str.zfill(6), format='%H%M%S').dt.time
    Out[12]: 
    0    00:00:00
    1    16:55:05
    2    20:33:55
    3    07:31:39
    4    07:52:11
    5    07:42:44
    Name: ZEIT, dtype: object
    

    细节

    In [13]: df
    Out[13]: 
         ZEIT
    0       0
    1  165505
    2  203355
    3   73139
    4   75211
    5   74244
    
    In [14]: df['ZEIT'].astype(str).str.zfill(6)
    Out[14]: 
    0    000000
    1    165505
    2    203355
    3    073139
    4    075211
    5    074244
    Name: ZEIT, dtype: object
    
    In [15]: pd.to_datetime(df['ZEIT'].astype(str).str.zfill(6), format='%H%M%S')
    Out[15]: 
    0   1900-01-01 00:00:00
    1   1900-01-01 16:55:05
    2   1900-01-01 20:33:55
    3   1900-01-01 07:31:39
    4   1900-01-01 07:52:11
    5   1900-01-01 07:42:44
    Name: ZEIT, dtype: datetime64[ns]