首页 > 解决方案 > 总结和划分时间的最佳方法

问题描述

import os
import csv
import pandas as pd
from datetime import datetime

read_file = pd.read_excel ('test.xlsx')
read_file['Duration'] = pd.to_datetime(read_file['Duration'])
hours = read_file['Duration'].dt.time

uren_lijst = []

for uren in hours:
    uren_lijst.append(uren)

此脚本返回带有 datetime.time 对象的脚本。模数对时间不起作用。解决此问题的最佳方法是什么?

这就是我想做的:如果时间在 8:00 到 8:15 之间,我想将 8 加起来。如果时间在 8:15 和 9:00 之间,我想总结时间减去 00:15(例如,8:30 将总结 8:15)。8:00以下或9:00以上的所有内容都必须完全相加。

我试着计算回到秒,我也试着把它当作字符串来做,但这似乎不起作用。

输入是一个 xlsx 文件,其数据如下所示。电流输出:

['0:00', '8:13', '8:15', '6:42', '0:00', '8:12', '8:12', '8:16', '6:27', '8:20', '6:59', '0:00', '8:27', '8:22', '9:13', '8:26', '8:07', '6:28', '0:00', '8:17', '8:58', '8:10', '8:16', '7:33', '5:43', '0:00', '8:29', '6:54', '7:55', '8:10', '8:10', nan]

编辑:

我可能有点不清楚,我很抱歉。输入是小时和分钟的列表。我已将其转换并显示为列表(如上)。

这是一种在一定条件下的四舍五入。

每八小时应四舍五入到八到十五分钟(8:15)。(例如:8:13 变为 8:00)从 8:15 到 9:00 必须倒计时一刻钟。(例如:8:32 变为 8:17)。高于 9 和低于 8 的所有内容都保持原样。(例如:7:30 仍为 7:30,09:01 仍为 09:01)。这些小时的总和必须相加。

我希望这样更清楚。

标签: pythonpython-3.x

解决方案


好吧,所以我以一种相当(可能是菜鸟)的方式自己做了,但嘿,它成功了。所以我首先计算了他们分钟和小时的秒数:

def seconden_convert(t):
h, m = [int(i) for i in t.split(':')]
return 3600*h + 60*m

之后,我只用几秒钟就将它们添加到了一个新列表中:

for uren in uren_lijst:
uren_lijst_correct.append(seconden_convert(uren))

然后,我用秒创建了一个 for 循环,并按照我需要的方式过滤它们:

uren_lijst_gefilterd = []

for seconden in uren_lijst_correct:
    if seconden <= 28800 and seconden >= 100:
        uren_lijst_gefilterd.append(seconden)
    elif seconden >= 28801 and seconden <= 29700:
        uren_lijst_gefilterd.append(29700)
    elif seconden >=29701 and seconden <= 32399:
        uren_lijst_gefilterd.append(seconden-900)
    elif seconden >= 32400:
        uren_lijst_gefilterd.append(seconden)

最后我把它计算回小时和分钟:

def uren_convert(seconds): 
min, sec = divmod(seconds, 60) 
hour, min = divmod(min, 60) 
return "%d:%02d" % (hour, min) 

这可能是一种非常繁琐的方式,但它确实有效,我从中学到了很多东西。


推荐阅读