时间的平均值
我尝试了 df[].mean() 方法,但它不起作用。应该还有改用的,我找不到
你可以利用
strptime
将它们解析成一个datetime
对象,然后使用timedelta
解析的值构造一个datetime
。
之后,将值相加并除以长度得到平均值。
from datetime import datetime, timedelta
def stringToTimeDelta(str):
dt = datetime.strptime(str, "%H:%M:%S.%f")
return timedelta(hours=dt.hour, minutes=dt.minute, seconds=dt.second, microseconds=dt.microsecond)
input = ["0:00:34.805936", "0:01:17.946625", "0:01:41.294841"]
# Convert string to timedelta
parsed = [stringToTimeDelta(x) for x in input]
# Maths operation on timedelta
print(sum(parsed, timedelta(0)) / len(parsed))
timedelta
:
import pandas as pd
df = pd.DataFrame({'elapsed': ['0:00:34.805936', '0:01:17.946625', '0:01:41.294841']})
df.elapsed = pd.to_timedelta(df.elapsed)
print(df.elapsed.mean())
输出:
0 days 00:01:11.349134
一个更简单的解决方案是使用 .split() 函数。
time = "0:01:17.946625"
some_list = time.split(":")
只要看到“:”,就会拆分字符串。现在的名单是: [“0”,“01”,“17.946625”] 然后,使用列表理解将它们转换为整数。
int_list = [int(item) for item in some_list]
现在,清单是 [0, 1, 17.946625] 然后,您可以将此列表转换为秒数。
hours_to_seconds = int_list[0] * 3600
mins_to_seconds = int_list[1] * 60
seconds = hours_to_seconds + mins_to_seconds + int_list[2]
现在,你有时间了。您可以通过将所有秒数存储在列表中来计算平均值。
time_list = [val1, val2, val3] # this list should have the seconds that you calculated
average = sum(time_list) / len(time_list)
现在,你有平均时间。请记住,这是获取平均时间的一种极其简单且效率低下的方法,其他答案肯定会更复杂。