我正在制作一个仪表板,向员工(现场技术人员)展示高效的工作时间。
我有一个从应用程序导出的 CSV 文件,技术人员在执行任务时使用该文件。我实际需要的包含每项任务的工作时间的列是由现场技术人员填写的,这种方式很难提取实际的工作时间。例如,该列填充了诸如以下的值:
1 hour. 25 minutes
2h. 22m
2hours for each technician
1 hour for technician x and 2 hours for technician y
12:00 - 13:40
from 12 till 15
等等
数据集包含超过 10.000 行
我已经使用 Power BI 和 Python 尝试了不同的方法,但确实很难找到一种解决方案来清理列,其中包含提到时间的所有这些可能性。
你们对如何去做有什么建议和想法吗?你会怎么办?对于我的问题的任何想法或建议将不胜感激。非常感谢。
从您提供的图像中我们可以看到,该时间可能以以下主要格式之一报告:
A.
或X,X
(后跟X
、
、h
、std
、stunde
)stunden
B.
(后跟X
或min
)minuten
C.
或XX:XX - YY:YY
X bis Y
还有其他行尝试连接上述格式:
I. 添加
符号来指示多个任务(尽管如此,时间仍使用 [1] 或 [2] 格式之一来指示)+
II. 将格式 (A) 和 (B) 连接在一起(即
)1 Stunden und 40 Minuten
在确定这些可能性之后,最好的方法是自己创建一个算法,将所有时间戳转换为
HH:MM
格式。以下大纲应该可以帮助您构建它:
定义三个匹配模式 (A)、(B) 和 (C) 的正则表达式
定义一个函数
timeExtracter()
,在给定输入funkyTime
的情况下执行以下逻辑:
HH:MM
格式)。HH:MM
格式。MM
并构造一个 00:MM
时间戳。迭代 CSV 中的每一行并应用以下逻辑:
und
或 +
),则在运算符的位置将时间戳分成两部分,并对每个部分调用 timeExtracter()
。然后将它们相加,你就会得到时间戳。将其存储在某处,并中断循环迭代以继续 CSV 文件中的下一行。timeExtracter()
。由于无法访问您的文件,我无法为算法提供更稳健的形状(可能存在未考虑的极端情况),但是,我确信它适用于大多数情况。但是,根据我提供的大纲,我相信它将作为您根据实际数据进行调整的良好起点。尽管如此,如果您在实施过程中遇到任何问题,请随时与我们联系。
话虽如此,我希望这对您有所帮助...并且愿代码与您同在!