两天之间的差异(不包括周末)

两天之间的差异(不包括周末),第1张

两天之间的差异(不包括周末)

想法是按日期逐层删除

times
楼层日期时间,并获取开始日期+一天之间的工作日数,然后按
hours3
列(如果不是周末时间)
numpy.busday_count
创建
hour1
hour2
按楼层按小时数的开始和结束时间列。最后汇总所有小时数列:

df = pd.Dataframe(columns=['Inflow_date_time','End_date_time', 'need'])df.Inflow_date_time= [pd.Timestamp('2019-08-01 23:22:46'),pd.Timestamp('2019-08-03 23:22:46'),pd.Timestamp('2019-08-01 23:22:46'),pd.Timestamp('2019-07-26 23:22:46'),pd.Timestamp('2019-08-05 11:22:46')]df.End_date_time= [pd.Timestamp('2019-08-05 17:43:51')] * 5df.need = [42,17,41,138,6]#print (df)

df["hours1"] = df["Inflow_date_time"].dt.ceil('d')df["hours2"] =  df["End_date_time"].dt.floor('d')one_day_mask = df["Inflow_date_time"].dt.floor('d') == df["hours2"]df['hours3'] = [np.busday_count(b,a)*24 for a, b in zip(df['hours2'].dt.strftime('%Y-%m-%d'), df['hours1'].dt.strftime('%Y-%m-%d'))]mask1 = df['hours1'].dt.dayofweek < 5hours1 = df['hours1']  - df['Inflow_date_time'].dt.floor('H')df['hours1'] = np.where(mask1, hours1, np.nan) / np.timedelta64(1 ,'h')mask2 = df['hours2'].dt.dayofweek < 5df['hours2'] = (np.where(mask2, df['End_date_time'].dt.floor('H')-df['hours2'], np.nan) /      np.timedelta64(1 ,'h'))df['date_diff'] = df['hours1'].fillna(0) + df['hours2'].fillna(0) + df['hours3']one_day = (df['End_date_time'].dt.floor('H') - df['Inflow_date_time'].dt.floor('H')) /  np.timedelta64(1 ,'h')df["date_diff"] = df["date_diff"].mask(one_day_mask, one_day)

print (df)     Inflow_date_time       End_date_time  need  hours1  hours2  hours3   2019-08-01 23:22:46 2019-08-05 17:43:51    42     1.0    17.0      24   1 2019-08-03 23:22:46 2019-08-05 17:43:51    17     NaN    17.0       0   2 2019-08-01 23:22:46 2019-08-05 17:43:51    41     1.0    17.0      24   3 2019-07-26 23:22:46 2019-08-05 17:43:51   138     NaN    17.0     120   4 2019-08-05 11:22:46 2019-08-05 17:43:51     6    13.0    17.0     -24   date_diff  0       42.0  1       17.0  2       42.0  3      137.0  4        6.0


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5675115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存