首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找出一天中不同的时间

找出一天中不同的时间
EN

Stack Overflow用户
提问于 2021-08-23 08:03:08
回答 1查看 52关注 0票数 0

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

示例机器A运行8小时从开始日期和时间12-8月,晚上9点到13-8月,5am我不能得到正确的时间,3小时从12-8月和5小时从13-8月怀疑,因为我正在使用datetime.now,它如何更改日期将与python中的开始日期/结束日期相同?

下面是我的代码:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2021-08-24 09:29:58

这是我的尝试:

代码语言:javascript
复制
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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68889145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档