将多种格式的持续时间数据转换为通用格式的“%H%M%S”。格式(分钟)的 %M 部分不一致

Transform multiple format Duration Data to common formatted '%H%M%S' . The %M part of the format (minutes) is inconsistent

我有一个 object 的持续时间数据,具有多种格式,特别是在冒号之间的分钟部分。任何想法,我如何转换这些数据。我尝试了所有可以想象的正则表达式(正确答案除外 :)),这是我苦苦挣扎的主要部分。例如,下面是我尝试 zero-pad 分钟列。

df['temp'] = df['temp'].replace(':?:', ':0?:', regex=True)

输入:

    Duration
0   00:0:00
1   00:00:00
2   00:8:00
3   00:08:00
4   00:588:00
5   09:14:00

预期输出选项 #1(时间格式):

    Duration
0   00:00:00
1   00:00:00
2   00:08:00
3   00:08:00
4   09:48:00
5   09:14:00

我的最终目标是获得会议记录,因此另一种可接受的格式是:

预期输出选项 #2(分钟 - 整数或浮点数):

    Minutes
0   0
1   0
2   8
3   8
4   588
5   554

我们可以 splitmul

df.Duration.str.split(':',expand=True).astype(int).mul([60,1,1/60]).sum(1)
0      0.0
1      0.0
2      8.0
3      8.0
4    588.0
5    554.0
dtype: float64

我们可以做到 pd.to_timedelta:

pd.to_timedelta(df.Duration)

输出:

0   00:00:00
1   00:00:00
2   00:08:00
3   00:08:00
4   09:48:00
5   09:14:00
Name: Duration, dtype: timedelta64[ns]

或选项 2 - 分钟:

pd.to_timedelta(df.Duration).dt.total_seconds()/60

输出:

0      0.0
1      0.0
2      8.0
3      8.0
4    588.0
5    554.0
Name: Duration, dtype: float64