我有一个pandas数据框,有一列日期时间。无论日期如何,我都需要找到此列的平均时间。例如,如果我有
dte
----
2018-02-20 20:30:00
2018-09-03 20:30:00
2017-05-18 21:00:00
2014-11-26 21:00:00
我希望得到
的结果20:45:00
我尝试过简单地采用数据时间对象的时间组件并对它们求平均值,一个
df['tm'].dt.time.mean()
但它给了我以下错误:
TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.time'
答案 0 :(得分:2)
一种方法是扣除规范化的datetime
,然后计算timedelta
系列的平均值。
df = pd.DataFrame({'datetime': ['2018-02-20 20:30:00', '2018-09-03 20:30:00',
'2017-05-18 21:00:00', '2014-11-26 21:00:00']})
# convert to datetime
df['datetime'] = pd.to_datetime(df['datetime'])
# take difference to normalized datetime
df['time'] = df['datetime'] - df['datetime'].dt.normalize()
# calculate mean and format
res = str(df['time'].mean())[-8:]
print(res)
'20:45:00'