【问题标题】:How to handle columns mixed with datetime.time and timestamp如何处理与 datetime.time 和时间戳混合的列
【发布时间】:2020-06-05 09:36:55
【问题描述】:

我想要一个所有列都采用datetime.time 格式的数据框。但我原来的数据框是这样的

        Moorabbin            Mordialloc  Aspendale            Edithvale            Chelsea          
    0   04:48:00             05:00:00    05:05:00             05:10:00             05:15:00 
    1   06:45:00             06:57:00    07:02:00             07:07:00             07:12:00
    2   1900-01-01 00:48:00  NaN         1900-01-01 01:03:00  1900-01-01 01:08:00  1900-01-01 01:13:00  
    3   05:09:00             NaN         NaN                  05:36:00             05:41:00 

我想得到的是

        Moorabbin            Mordialloc  Aspendale            Edithvale            Chelsea          
    0   04:48:00             05:00:00    05:05:00             05:10:00             05:15:00     
    1   06:45:00             06:57:00    07:02:00             07:07:00             07:12:00
    2   00:48:00             NaN         01:03:00             01:08:00             01:13:00 
    3   05:09:00             NaN         NaN                  05:36:00             05:41:00 

这些值的数据类型是

> type(test_result.iloc[0,0])
datetime.time
> type(test_result.iloc[2,0])
pandas._libs.tslibs.timestamps.Timestamp

我尝试了to_datetime(format= "%H:%M:%S", error = "coerce")datetime.strptime(test_result['Moorabbin'],"%H:%M:%S").time()test_result.astype('datetime64[ns]', copy=True, errors='ignore'),但没有任何效果。有人可以帮忙吗?

【问题讨论】:

    标签: python pandas dataframe datetime timestamp


    【解决方案1】:

    一种方法如下。 确保类型为“对象”,您可以在将数据减少到所需的“长度”后将其转换为日期时间。

    那就df_new = df.apply(lambda x: x.str.split(' ').str[-1], axis=1)

    输入

      Moorabbin     Mordialloc  Aspendale   Edithvale   Chelsea
    0   4:48:00     5:00:00     5:05:00     5:10:00     5:15:00
    1   6:45:00     6:57:00     7:02:00     7:07:00     7:12:00
    2   1/1/1900 0:48:00    NaN     1/1/1900 1:03:00    1/1/1900 1:08:00    1/1/1900 1:13:00
    3   5:09:00     NaN     NaN     5:36:00     5:41:00
    

    输出(df_new)

      Moorabbin     Mordialloc  Aspendale   Edithvale   Chelsea
    0   4:48:00     5:00:00     5:05:00     5:10:00     5:15:00
    1   6:45:00     6:57:00     7:02:00     7:07:00     7:12:00
    2   0:48:00     NaN         1:03:00     1:08:00     1:13:00
    3   5:09:00     NaN             NaN     5:36:00     5:41:00
    

    注意结果是对象而非日期时间对象,但您可以在这些列上使用pd.to_datetime 将其转换为日期时间对象。

    【讨论】:

      猜你喜欢
      • 2019-10-28
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2014-08-10
      • 2020-12-15
      • 2018-07-06
      相关资源
      最近更新 更多