将多种格式的持续时间数据转换为通用格式的“%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
我们可以 split
和 mul
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
我有一个 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
我们可以 split
和 mul
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