【问题标题】:extract one and two digit hour time pandas提取一位和两位数小时时间熊猫
【发布时间】:2018-07-31 05:15:46
【问题描述】:

我想以 hh:mm 和 h:mm 格式从我从 pdf 文件中读取的 raceresult2014 数据框中提取时间。

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 之类的python ?

【问题讨论】:

  • 欢迎来到 SO。请提供minimal reproducible example。在这种情况下,一些示例数据和所需的输出将是理想的。祝你好运!
  • 谢谢@jpp。我已按照您的建议编辑了问题。

标签: pandas extract


【解决方案1】:

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

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

我个人强烈推荐使用https://regexr.com/ 来测试正则表达式。左侧的参考资料也非常有用。您可以通过按左侧菜单栏上的“量词和交替”来获取有关量词的更多信息。

如果有什么不清楚的地方请告诉我。

【讨论】:

  • 感谢您的回答。我以前不知道什么是正则表达式!我认为 /d/d 是 python 的一部分,我只是从某个地方复制的 :) 现在我正在学习正则表达式。只是我没有在菜单中走那么远:)
  • 没问题 :) 很高兴它有帮助!如果您需要更多帮助,请告诉我!如果这解决了您的问题,您介意通过单击勾选将其设置为解决方案吗?谢谢!
  • 我回来给你打勾。因为我还有一个新问题!如果我不回来给你加标签,我怎么能在 stackoverflow 上让你知道我的新问题?这是我的新问题stackoverflow.com/questions/52545774/… 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 2020-08-05
  • 2016-09-04
  • 2020-09-21
  • 2017-11-17
  • 1970-01-01
  • 2020-06-24
相关资源
最近更新 更多