Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何计算平均时间?_Python_Python 2.7_Csv - Fatal编程技术网

Python 我如何计算平均时间?

Python 我如何计算平均时间?,python,python-2.7,csv,Python,Python 2.7,Csv,我目前正在从事这个项目,在根据相应的类型查找平均时间时遇到了一些问题。目前,在阅读CSV文件后,我的输出如下所示 #Following this format (x typeList : timeTakenList) 0 Lift : 5 days, 5:39:00 1 Lift : 5 days, 5:31:00 2 lighting : 3 days, 9:47:00 3 ACMV : 5 days, 5:21:00 4 lighting : 3 days, 9:32:00 . . .

我目前正在从事这个项目,在根据相应的类型查找平均时间时遇到了一些问题。目前,在阅读CSV文件后,我的输出如下所示

#Following this format (x typeList : timeTakenList)

0 Lift : 5 days, 5:39:00
1 Lift : 5 days, 5:31:00
2 lighting : 3 days, 9:47:00
3 ACMV : 5 days, 5:21:00
4 lighting : 3 days, 9:32:00
.
.
.
如何计算每种类型的平均时间,以便获得以下输出

0 Lift : (5 days, 5:31:00 + 5 days, 5:39:00) / 2
1 lighting : (3 days, 9:47:00 + 3 days, 9:32:00) / 2
2 ACMV : 5 days, 5:21:00
.
.
.
timeTakenList的计算方法是从CompletedDate列减去另一列Acknowledged Date

timeTakenList = completedDate - acknowledgedDate
类型列表中还有很多其他类型,我试图避免使用if语句,比如if-typeList[x]=“Lift”,然后将时间加在一起,等等

.csv文件的示例:


我不太清楚如何让我的问题更清楚,但非常感谢您的帮助。

请检查以下实现

import re

typeList = ["Lighting", "Lighting", "Air-Con", "Air-Con", "Toilet"]

timeTakenList = ["10hours", "5hours", "2days, 5hrs", "5hours", "4hours"]

def convertTime(total_time):
    li = list(map(int,re.sub(r"days|hrs|hours","",total_time).split(",")))
    if len(li) == 2:
        return li[0] * 24 + li[1]
        return li[0]

def convertDays(total_time):
    days = int(total_time / 24)
    hours = total_time % 24
    if (hours).is_integer():
        hours = int(hours)
    if days == 0:
        return str(hours) + "hours"
    return str(days) + "days, " + str(hours) + "hrs"

def avg(numbers):
    av = float(sum(numbers)) / max(len(numbers), 1)
return av 

avgTime = {}

for i, types in enumerate(typeList):
    if avgTime.has_key(types):
        avgTime[types].append(convertTime(timeTakenList[i]))
    else:
        avgTime[types] = [convertTime(timeTakenList[i])]

for types in avgTime.keys():
    print types + " : " + convertDays(avg(avgTime[types]))
算法

  • 从计时器列表中转换条带“小时”、“小时”、“天”
  • 将由天和小时组成的元素转换为小时 更简单的平均值计算
  • 创建将typeList元素作为键并进行转换的哈希 timeTakenList元素作为值列表
  • 打印每个键转换回天和小时的值

typeList是否包含[“0照明”、“1照明”…]之类的字符串第一部分:从
timeTakenList
中获取值并将其转换为小时数。@Harry不,typeList只是[照明、照明、空调,…]前面的数字只是为了方便参考我的.csv文件。请给出一个原始格式的csv文件示例。@MartinEvans我已经包含了.csv文件的一部分供参考。希望这就是你的意思。只是删除代码而不做任何解释对未来的读者来说不是很有帮助。