将行转换为日期时间Python

时间:2019-11-26 08:50:46

标签: pandas datetime type-conversion row

这是我的数据框:

          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),然后计算总和。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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