找出一天中不同的时间

2024-09-30 20:21:50 发布

您现在位置:Python中文网/ 问答频道 /正文

Dataframe 我有不同的机器运行不同的时间,可能跨越一天,我想区分它在不同的日子

示例机器A从开始日期和时间8月12日晚上9点到8月13日上午5点运行8小时 我无法得到8月12日起3小时和8月13日起5小时的正确时间 怀疑是因为我现在用的是datetime 如何更改日期将与python中的开始日期/结束日期相同

这是我的密码:

endoftoday = datetime.now()
endoftoday = endoftoday.replace(hour=23,minute=59,second=59)

dt['Start_Date']=dt['Start_Time'].dt.strftime('%d/%m/%Y')
dt['End_Date']=dt['Finish_Time'].dt.strftime('%d/%m/%Y')

if (dt.['Start_Date'].str == dt['End_Date'].str):
    dt['Tested_Time_Today']= endoftoday-dt['Start_Time']
    dt['Tested_Time_NextDay']= dt['Finish_Time'] - endoftoday

Tags: dataframedatetimedatetime时间dtstartend
1条回答
网友
1楼 · 发布于 2024-09-30 20:21:50

以下是我的尝试:

import pandas as pd
import datetime


def get_times(args):
    start_time, end_time, start_date, end_date = args
    hours = {}
    for day in pd.date_range(start_date, end_date, freq='d'):
        hours[day] = max(day, end_time) - max(start_time, day) + datetime.timedelta(hours=24)
    return hours


df = pd.DataFrame({'Start_Time': [datetime.datetime(2021,8,21,6,2), datetime.datetime(2021,8,21,7,19)], 'Finish_Time': [datetime.datetime(2021,8,22,5,12), datetime.datetime(2021,8,21,16,50)], 'Start_Date': [datetime.date(2021,8,21), datetime.date(2021,8,21)], 'End_Date': [datetime.date(2021,8,22), datetime.date(2021,8,21)]})
df['hours'] = df.apply(get_times, axis=1)
print(df)

这可能不是你想要的,因为我也不太理解你的问题。但是你得到的是一个新的列,每一行都包含一个字典,日期作为键,当天的小时数作为值

如果你让我们知道你到底想要什么,我也许可以改进答案

编辑:如果您的时间段超过两天,这将不起作用。如果有必要,时间计算将不得不稍微延长。如果您的列比我们计算的列多,请将倒数第二行更改为df['hours'] = df[['Start_Time', 'Finish_Time', 'Start_Date', 'End_Date']].apply(get_times, axis=1)

相关问题 更多 >