<p>下面是一个基于您提供的数据的示例。我已经添加了将日期转换为datetime(如果它们是对象)以及将datetime设置为<code>datetimeindex</code>的步骤,以便使用<code>resample</code>。事情会是这样的:</p>
<pre><code>import pandas as pd
import numpy as np
d ={'datetime' :['2020-10-27 00:00:05','2020-10-27 00:00:10','2020-10-27 00:00:15','2020-10-27 01:00:05','2020-10-27 01:00:10','2020-10-27 01:00:15','2020-10-27 00:00:05','2020-10-27 00:00:10','2020-10-27 00:00:15','2020-10-27 01:00:05','2020-10-27 01:00:10','2020-10-27 01:00:15'],
'hostname':['server001','server001','server001','server001','server001','server001','server002','server002','server002','server002','server002','server002'],
'sessions':[ 22,25,21 ,30,30,35,15,10, 11,19,22,18]}
df = pd.DataFrame(data=d)
df['datetime'] = pd.to_datetime(df['datetime'])
df = df.set_index(pd.DatetimeIndex(df['datetime']))
df.resample('H').mean()
</code></pre>
<p>实际上,您可以修改此示例以适合其他用途。正如我理解你的问题,你想计算每小时平均会话数。如果需要其他groupby.s,请检查<code>resample</code>-函数</p>
<p>除此之外的另一种方法是对<code>date</code>和<code>time</code>进行排序,然后取平均值:</p>
<pre><code>df['datetime'] = pd.to_datetime(df['datetime'])
df['Date'] = [x.strftime('%Y-%m-%d') for x in df['datetime'].tolist()]
df['Time'] = ['%s:00' % x.strftime('%H') for x in df['datetime'].tolist()]
df_1 = df.groupby(['Date', 'Time', 'hostname']).mean()
</code></pre>
<p>给</p>
<p><a href="https://i.stack.imgur.com/X9T7Q.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/X9T7Q.png" alt="enter image description here"/></a></p>