熊猫将列转换为时间

Aqu*_*a 4 6 python dataframe pandas

这是我的 DF

             Start-Time Running-Time Speed-Avg HR-Avg
0    2016-12-18 10:8:14       0:24:2        20    138
1    2016-12-18 10:8:14       0:24:2        20    138
2    2016-12-23 8:52:36      0:31:19        16    134
3    2016-12-23 8:52:36      0:31:19        16    134
4     2016-12-25 8:0:51      0:30:10        50    135
5     2016-12-25 8:0:51      0:30:10        50    135
6    2016-12-26 8:41:26       0:10:1        27    116
7    2016-12-26 8:41:26       0:10:1        27    116
8      2017-1-7 11:16:9      0:26:15        22    124
9      2017-1-7 11:16:9      0:26:15        22    124
10    2017-1-10 19:2:54      0:53:51         5    142
11    2017-1-10 19:2:54      0:53:51         5    142
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用H:M:S格式格式化此列

timeDF=(pd.to_datetime(cleanDF['Running-Time'],format='%H:%M:%S'))
Run Code Online (Sandbox Code Playgroud)

但我一直收到 ValueError: time data ' 0:24:2' does not match format '%M:%S' (match)这个错误

先感谢您。

jez*_*ael 8

尾随空格存在问题,因此需要str.strip

或者,如果DataFrame通过read_csv添加参数从文件创建skipinitialspace=True

cleanDF = pd.read_csv(file, skipinitialspace = True)
Run Code Online (Sandbox Code Playgroud)
timeDF=(pd.to_datetime(cleanDF['Running-Time'].str.strip(), format='%H:%M:%S'))
print (timeDF)
0    1900-01-01 00:24:02
1    1900-01-01 00:24:02
2    1900-01-01 00:31:19
3    1900-01-01 00:31:19
4    1900-01-01 00:30:10
5    1900-01-01 00:30:10
6    1900-01-01 00:10:01
7    1900-01-01 00:10:01
8    1900-01-01 00:26:15
9    1900-01-01 00:26:15
10   1900-01-01 00:53:51
11   1900-01-01 00:53:51
Name: Running-Time, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)

但也许更好的是通过to_timedelta以下方式将其转换为 timedeltas :

timeDF=(pd.to_timedelta(cleanDF['Running-Time'].str.strip()))
print (timeDF)
0    00:24:02
1    00:24:02
2    00:31:19
3    00:31:19
4    00:30:10
5    00:30:10
6    00:10:01
7    00:10:01
8    00:26:15
9    00:26:15
10   00:53:51
11   00:53:51
Name: Running-Time, dtype: timedelta64[ns]
Run Code Online (Sandbox Code Playgroud)