首页 > 解决方案 > 几个月内给定每小时的时间平均值

问题描述

我一直在寻找给定时间段内的平均工人开始时间,并在 00:00 到 24:00 的范围内返回结果。

这是我们的数据:

data = pd.DataFrame({
'ID_worker': [1, 1, 1, 1, 2, 2, 3, 4, 4, 5, 6, 6],
'working_start_time': ['2010-01-01 12:01:00', '2010-01-01 01:27:33', 
'2010-04-02 12:01:00', '2010-04-01 07:24:00', '2011-01-01 12:01:00', 
'2011-01-01 01:27:33', '2013-01-01 12:01:00', '2014-01-01 12:01:00', 
'2014-01-01 01:27:33', '2015-01-01 01:27:33', '2016-01-01 01:27:33', 
'2011-01-01 01:28:00']})

得到结果后,我想将它们绘制为:时间范围(00:00 到 24:00)作为 x 轴,员工人数作为 y 轴。例如,有 200,000 名工人的平均开始时间是上午 8:34。以及对应于其 ID 的列中每个工人的平均开始时间。

我尝试了以下命令:

data.groupby(by=['ID_worker', 'working_start_time'])['working_start_time'].mean().reset_index()

但不幸的是,这种方法不起作用。

任何帮助将不胜感激。

标签: python-3.xpandasdataframe

解决方案


# convert dates to numeric representation
df['working_start_time_num'] = pd.to_numeric(pd.to_datetime(df.working_start_time))
# groupby ID_worker and calculate mean of working_start_time_num
start_time_means = df.groupby('ID_worker').working_start_time_num.mean()
#convert means to datetime
start_time_means = pd.to_datetime(start_time_means)
# drop temporary feature
df = df.drop(columns=['working_start_time_num'])

推荐阅读