提取一位和两位数小时时间 pandas

extract one and two digit hour time pandas

我想从我的 raceresult2014 数据帧中提取格式为 hh:mmh:mm 的时间我从pdf文件中读取。

Team
1   Zeit/temps
2   1. Perraudin Sports II
3   8:18.21
4   Z1-S1
5   1.
6   (505)
7   2. GebSpez Abt 1 Det 1/7
8   8:34.22
9   Z1-MH1
10  1.
11  (513)
12  1.Les filles de Zinal
13  18:21.14
14  Z1-F
15  1. Courvoisier Nathalie
16  18:08.38
17  Z1-S2

预期输出

Team                                Time
1   Zeit/temps
2   1. Perraudin Sports II          8:18
3   8:18.21
4   Z1-S1
5   1.
6   (505)
7   2. GebSpez Abt 1 Det 1/7        8:34    
8   8:34.22
9   Z1-MH1
10  1.
11  (513)
12  1.Les filles de Zinal           18:21
13  18:21.14
14  Z1-F
15  1. Courvoisier Nathalie         18:08
16  18:08.38
17  Z1-S2

到目前为止这段代码有效:

raceresult2014['Time']=raceresult2014['Team'].str.extract('(\d\d:\d\d)',expand=True)

但它只能提取 hh:mm 格式并且 h:mm 未提取。 我尝试附加另一行

onedigit=raceresult2014['Time']=raceresult2014['Team'].str.extract('(\d:\d\d)',expand=True)
raceresult2014['Time'].append(onedigit)

但现在它又回到仅提取 h:mm 格式并留下 hh:mm 。 我知道出了点问题(也许是关于复制 raceresult2014['Time'] 系列?)但不知道是什么。真的很感激一些帮助。谢谢!

我到处都看了。也许是 mask for one digit and two digit for python?

快速修复:您可以尝试将 '\d{1,2}:\d{2}' 作为您的正则表达式吗?

{n,m} 是一个量词,它指定某些字符存在的下限和上限。第一个 \d{1,2} 指定一个或两个数字,然后第二个 \d{2} 指定两个数字。

我个人强烈推荐使用 https://regexr.com/ 来测试正则表达式。左边的参考资料也非常有帮助。您可以通过按左侧菜单栏上的 "Quantifiers & Alternation" 获得有关量词的更多信息。

如果有任何不清楚的地方,请告诉我。