【问题标题】:Convert rows into datetimes Python将行转换为日期时间 Python
【发布时间】:2020-03-21 15:21:17
【问题描述】:

这是我的数据框:

          Parametres           Valeurs            Valeurs.1            Valeurs.2
0         Nombre de reboot     0                    0                    0
1         mode privé           1                    1                    1
2         mode public          0                    0                    0
3         Date de roulage      2019-01-05           2019-01-05            2019-01-05
4         Heures de roulage    00:07:07             00:01:01             00:03:03
5         Temps de trajet      00:05:05             00:00:00             00:01:01
6         première connex      00:01:01             00:01:01             00:01:01
7         Nombre de decon      0                    0                    1
8         Durée total          00:00:00             00:00:00             00:02:02

我需要将第 4 行、第 5 行、第 6 行和第 8 行从字符串转换为日期时间(%H:%M:%S)然后计算总和。

有可能吗?因为在我的搜索过程中,我只发现了如何将列转换为日期时间。

【问题讨论】:

    标签: pandas datetime type-conversion row


    【解决方案1】:

    我相信您需要将 seelct 列设置为日期时间:

    df1 = df.iloc[[3,4,5,8], 1:].apply(pd.to_datetime)
    print (df1)
                  Valeurs           Valeurs.1           Valeurs.2
    3 2019-01-05 00:00:00 2019-01-05 00:00:00 2019-01-05 00:00:00
    4 2019-11-26 00:07:07 2019-11-26 00:01:01 2019-11-26 00:03:03
    5 2019-11-26 00:05:05 2019-11-26 00:00:00 2019-11-26 00:01:01
    8 2019-11-26 00:00:00 2019-11-26 00:00:00 2019-11-26 00:02:02
    

    但最好将一行转换为日期时间,另一行转换为 timedeltas:

    df2 = df.iloc[[3], 1:].apply(pd.to_datetime)
    print (df2)
         Valeurs  Valeurs.1  Valeurs.2
    3 2019-01-05 2019-01-05 2019-01-05
    
    df3 = df.iloc[[4,5,8], 1:].apply(pd.to_timedelta)
    print (df3)
       Valeurs Valeurs.1 Valeurs.2
    4 00:07:07  00:01:01  00:03:03
    5 00:05:05  00:00:00  00:01:01
    8 00:00:00  00:00:00  00:02:02
    

    更好的解决方案是对每列相同类型的数据进行整形:

    df4 = df.set_index('Parametres').T
    df4['Date de roulage'] = pd.to_datetime(df4['Date de roulage'])
    cols1 = ['Heures de roulage','Temps de trajet','premiere connex','Duree total']
    df4[cols1] = df4[cols1].apply(pd.to_timedelta)
    
    cols2 = df4.columns.difference(cols1 + ['Date de roulage'])
    df4[cols2] = df4[cols2].astype(int)
    print (df4)
    Parametres  Nombre de reboot  mode prive  mode public Date de roulage  \
    Valeurs                    0           1            0      2019-01-05   
    Valeurs.1                  0           1            0      2019-01-05   
    Valeurs.2                  0           1            0      2019-01-05   
    
    Parametres Heures de roulage Temps de trajet premiere connex  Nombre de decon  \
    Valeurs             00:07:07        00:05:05        00:01:01                0   
    Valeurs.1           00:01:01        00:00:00        00:01:01                0   
    Valeurs.2           00:03:03        00:01:01        00:01:01                1   
    
    Parametres Duree total  
    Valeurs       00:00:00  
    Valeurs.1     00:00:00  
    Valeurs.2     00:02:02  
    
    print (df4.dtypes)
    Nombre de reboot               int32
    mode prive                     int32
    mode public                    int32
    Date de roulage       datetime64[ns]
    Heures de roulage    timedelta64[ns]
    Temps de trajet      timedelta64[ns]
    premiere connex      timedelta64[ns]
    Nombre de decon                int32
    Duree total          timedelta64[ns]
    dtype: object
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-19
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 2010-12-28
      • 2017-12-18
      • 2017-05-14
      相关资源
      最近更新 更多