首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >体育数据的时间格式(成绩/时间计量)

体育数据的时间格式(成绩/时间计量)
EN

Stack Overflow用户
提问于 2020-09-21 10:08:06
回答 2查看 76关注 0票数 0

我想用以下格式表示一些数据: 120小时24分45秒。我花了一些时间寻找在Python或Pandas中使用的适当的格式化函数,但是找不到与我所需要的相应的函数。

我掌握的数据如下:

197小时54分0秒

200小时28分49秒

147小时13分58秒

datetime.time可以工作,但我的限制范围是0,23小时数。

我可以使用自己的格式化风格,但我更希望有一个可以使用的“标准格式”(计算偏移量,将其翻译成其他格式,等等)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-21 10:48:34

您希望使用Timedelta对象。datetime也有一个,但我更喜欢pandas

代码语言:javascript
复制
import pandas as pd
td = pd.Timedelta('200hr 28min 49sec')

您可以添加、减去和除以时间差。要做更多的计算,您可能需要使用td.total_seconds()

但是打印时间增量会给您提供一种不同的格式:

代码语言:javascript
复制
>>> td
Timedelta('8 days 08:28:49')

解决方案:编写自己的格式函数

代码语言:javascript
复制
def timedelta_to_str(td):
    h = td // pd.Timedelta('1h')
    td -= pd.Timedelta(hours = h)
    m = td // pd.Timedelta('1m')
    td -= pd.Timedelta(minutes = m)
    s = td.seconds
    return f'{h}hr {m}min {s}sec'
代码语言:javascript
复制
>>> timedelta_to_str(td)
200hr 28min 49sec

若要在DataFrame中使用此格式,您可能需要使用以下黑客:

代码语言:javascript
复制
pd.Timedelta.__repr__ = timedelta_to_str

这将更改所有 Timedelta对象的默认表示形式!

或者您可能希望使用继承来使其变得非常干净:

代码语言:javascript
复制
class myTimedelta(pd.Timedelta):
    def __repr__(self):
        td = pd.Timedelta(self) # make a copy
        h = td // pd.Timedelta('1h')
        td -= pd.Timedelta(hours = h)
        m = td // pd.Timedelta('1m')
        td -= pd.Timedelta(minutes = m)
        s = td.seconds
        return f'{h}hr {m}min {s}sec'
代码语言:javascript
复制
>>> myTimedelta('200hr 28min 49sec')
200hr 28min 49sec
>>> myTimedelta('200hr 28min 49sec') + myTimedelta('1hr')
201hr 28min 49sec
票数 1
EN

Stack Overflow用户

发布于 2020-09-21 10:16:17

您可以创建由时间三角洲填充的列

代码语言:javascript
复制
df['td'] = pd.to_timedelta(df["data"])
print (df)
                data              td
0   197hr 54min 0sec 8 days 05:54:00
1  200hr 28min 49sec 8 days 08:28:49
2   231hr 7min 15sec 9 days 15:07:15
3  228hr 36min 13sec 9 days 12:36:13
4   221hr 36min 0sec 9 days 05:36:00
5    222hr 8min 6sec 9 days 06:08:06
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63990156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档