【问题标题】:Converting a dataframe to pandas datetime format将数据框转换为 pandas 日期时间格式
【发布时间】:2018-07-17 21:23:28
【问题描述】:

我有一个包含以下列的数据框:

df1:

       DOU  Hr_y Min_y  Sec_y  Hr_x  Min_x  Sec_x
2017-09-02    12     5     16    16      5     16
2017-09-02    14    21     45    21      6     30

我想将 Hr_y,Min_y,Sec_y,Hr_x,Min_x,Sec_x 转换为 pandas 日期时间格式。

这可能是什么语法?

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    您可以通过hourminutes 和seconds 创建timedeltas 并添加到datetimes:

    df['DOU'] = pd.to_datetime(df['DOU'])
    
    a = pd.to_timedelta(df.filter(regex='y$').astype(str).apply(':'.join, 1))
    b = pd.to_timedelta(df.filter(regex='x$').astype(str).apply(':'.join, 1))
    
    df['x'] = df['DOU'] + a
    df['y'] = df['DOU'] + b
    print (df)
             DOU  Hr_y  Min_y  Sec_y  Hr_x  Min_x  Sec_x                   x  \
    0 2017-09-02    12      5     16    16      5     16 2017-09-02 12:05:16   
    1 2017-09-02    14     21     45    21      6     30 2017-09-02 14:21:45   
    
                        y  
    0 2017-09-02 16:05:16  
    1 2017-09-02 21:06:30  
    

    另一种解决方案是将所有列连接在一起,然后转换为日期时间:

    df['x'] = pd.to_datetime(df['DOU'].astype(str) + 
                            df['Hr_x'].astype(str) + 
                            df['Min_x'].astype(str) + 
                           df['Sec_x'].astype(str), format='%Y-%m-%d%H%M%S')
    
    df['y'] = pd.to_datetime(df['DOU'].astype(str) + 
                            df['Hr_y'].astype(str) + 
                            df['Min_y'].astype(str) + 
                           df['Sec_y'].astype(str), format='%Y-%m-%d%H%M%S')
    print (df)
              DOU  Hr_y  Min_y  Sec_y  Hr_x  Min_x  Sec_x                   x  \
    0  2017-09-02    12      5     16    16      5     16 2017-09-02 16:51:06   
    1  2017-09-02    14     21     45    21      6     30 2017-09-02 21:06:30   
    
                        y  
    0 2017-09-02 12:51:06  
    1 2017-09-02 14:21:45  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 1970-01-01
      • 2022-11-30
      相关资源
      最近更新 更多