首页 > 解决方案 > 用几分之一秒计算平均时间

问题描述

我在 pandas 数据框中有 3 个不同的时间戳列,其中两个记录了几分之一秒,而第三个没有几分之一秒。我想计算这 3 列的平均值。

我已经尝试使用列上的 mean 函数计算平均值,并始终收到 nan 作为结果

import pandas as pd 
data = [{'time1': '2018-07-22 04:34:10.8966', 'time2': '2017-07-22 04:34:10.8966', 'time3': '2018-07-27 00:10:04'}]
df = pd.DataFrame(data)
df['estimate'] = df[['time1', 'time2', 'time3']].mean(axis=1)
df 

预期:3 个时间戳的平均值 实际:虽然没有错误,但它也总是评估为 nan,这不是我们想要的。

标签: python-3.xpandasdatetime

解决方案


据我所知,您不能直接在日期时间值上对其进行转换,您需要对其进行转换、平均,然后再转换回来:

data = [{'time1': '2018-07-22 04:34:10.8966', 'time2': '2017-07-22 04:34:10.8966', 'time3': '2018-07-27 00:10:04'}]
df = pd.DataFrame(data).apply(pd.to_datetime)

df['estimate'] = pd.to_datetime(df[['time1', 'time2', 'time3']].values.astype(pd.np.int64).mean(axis=1))

结果:

                       time1                      time2               time3                      estimate
0 2018-07-22 04:34:10.896600 2017-07-22 04:34:10.896600 2018-07-27 00:10:04 2018-03-24 03:06:08.597733376

推荐阅读