Python 您需要计算两次之间的分钟数

Python 您需要计算两次之间的分钟数,python,pandas,Python,Pandas,我正在尝试使用pandas/python加载数据帧,并计算0900-2100之间发生的停机分钟数。我一直试图得到每个网站,但只能得到一个总值。下面是数据帧示例。我正在尝试生成第三列中的数据: 您可以使用pandas的DatetimeIndex函数将停机时间和停机时间之间的差异转换为小时、分钟和秒。然后你可以将小时数乘以60,再加上分钟数,得到总停机时间(分钟)。见下例: 作为pd进口熊猫 日期\u格式=%m-%d-%Y%H:%m:%S 插入数据帧的上下时间示例 down1=dt.datetime

我正在尝试使用pandas/python加载数据帧,并计算0900-2100之间发生的停机分钟数。我一直试图得到每个网站,但只能得到一个总值。下面是数据帧示例。我正在尝试生成第三列中的数据:

您可以使用pandas的DatetimeIndex函数将停机时间和停机时间之间的差异转换为小时、分钟和秒。然后你可以将小时数乘以60,再加上分钟数,得到总停机时间(分钟)。见下例:

作为pd进口熊猫 日期\u格式=%m-%d-%Y%H:%m:%S 插入数据帧的上下时间示例 down1=dt.datetime.STRTIME'8-01-2019 00:00:00',日期格式 up1=dt.datetime.STRTIME'8-01-2019 00:20:00',日期格式 down2=dt.datetime.STRTIME'8-01-2019 02:26:45',日期格式 up2=dt.datetime.STRTIME'8-01-2019 03:45:04',日期格式 down3=dt.datetime.strtime'8-01-2019 06:04:00',日期格式 up3=dt.datetime.StrTime'8-01-2019 06:06:34',日期格式 time_df=pd.DataFrame[{'down':down1,'up':up1},{'down':down2,'up':up2},{'down':down3,'up':up3},] 从下一列减去上一列,并将结果转换为日期时间索引 down_time=pd.DatetimeIndextime_df['up']-time_df['down'] 访问您的新索引,将小时转换为分钟,并添加分钟以获取分钟内的停机时间 停机时间\分钟=time.hour*60+time.min 将上述数组应用于新的数据帧列 时间df[‘停机时间’]=停机时间最小值 时间 这是本例的结果:

停机时间['Up'].次停机时间['Down'].dt.总秒数?@QuangHoang我一直无法让它工作。它的一部分是字符串索引必须是整数?
import pandas as pd
from pandas import Timestamp
import pytz
from pytz import all_timezones
import datetime
from datetime import time
from threading import Timer
import time as t
import xlrd
import xlwt
import numpy as np
import xlsxwriter

data = pd.read_excel('lab.xlsx')

data['outage'] = data['Down'] - data['Down']
data['outage'] = data['Down']/np.timedelta64(1,'m')

s = data.apply(lambda row: pd.date_range(row['Down'], row['Up'], freq='T'), axis=1).explode()

#returns total amount of downtime between 9-21 but not by site
total = s.dt.time.between(time(9), time(21)).sum()  

#range of index[0] for s 
slist = range(0, 20) 

#due to thy this loop itterates, it returns the number of minutes between down and up 
for num in slist:
    Duration = s[num].count()
    print(Duration)  

#percentage of minutes during business hours
percentage = (total / sum(data['duration'])) * 100
print('The percentage of outage minutes during business hours is:', percentage)

#secondary function to test
def by_month():
    s = data.apply(lambda row: pd.date_range(row['Adjusted_Down'], row['Adjusted_Up'], freq='T'), axis=1).explode()
    downtime = pd.DataFrame({
        'Month': s.astype('datetime64[M]'),
        'IsDayTime': s.dt.time.between(time(9), time(21))
    })
    downtime.groupby('Month')['IsDayTime'].sum()

#data.to_excel('delete.xls', 'a+')