我目前正试图根据文章An Interactive Web Dashboard with Plotly and Flask使用plotly
和flask在公式1中创建用于分析的web仪表板
我有MM:SS:sss字符串格式的圈数(其中MM是分钟,sss是毫秒),我尝试(下面的python脚本)使用datetime.timedelta
将其转换为可量化的值,以便我能够绘制它们并对其进行操作(例如,找到一个驱动程序在若干圈上的平均时间)。但是,当我尝试在plotly
中绘制timedelta
对象时,它们以微秒为单位显示
是否可以以指定的时间格式创建timedelta
对象并对其进行量化,以便plotly
正确地绘制它们
from datetime import timedelta
times = ["1:23.921", "1:24.690", "1:24.790"]
# convert to timedelta object
def string_con(string_time):
new_time = timedelta(minutes=int(string_time.split(
":")[0]), seconds=int((string_time.split(":")[1]).split(".")[0]),
milliseconds=int((string_time.split(":")[1]).split(".")[1]))
return new_time
# compute average pace using timedelta objects
def average_pace(laps):
laps = list(map(string_con, laps))
return (sum(laps, timedelta(0))/len(laps))
print(average_pace(times))
您需要将一个
timedelta
的内部数值转换为不同的时间单位,这些时间单位与它存储的时间单位不同,分别是days
、seconds
和microseconds
既然您说自己无法将它们转换为字符串,那么一个潜在的解决方法可能是将它们转换为
timedelta
子类,该子类可以按照您想要的方式将自身转换为字符串需要记住的一件事是
timedelta
可能包含巨大的值,必须以某种方式进行处理-因此,仅仅说您想要“MM:SS.sss”格式忽略了一个事实,即理论上也可能涉及数天和数小时。下面的函数计算它们,但仅在它们非零时显示它们的值下面的代码定义了一个新的
MyTimeDelta
子类并使用它。我已经定义了子类“__str__()
方法以返回所需格式的字符串。现在,每当新类的实例转换为字符串时,都会使用前一个函数,但该类作为一个整体仍然像它的基类一样是“数值的”。子类“__str__()
方法使用了我添加的名为_convert_units()
的私有助手方法相关问题 更多 >
编程相关推荐