我在pandas数据框中有3列不同的时间戳,其中两列记录了几分之一秒,而第三列则没有几分之一秒。我想计算这三列的平均值。
我已经尝试使用列上的均值函数来计算平均值,并始终获得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,这不是所需要的。
答案 0 :(得分:0)
据我所知,您不能直接使用日期时间值进行转换,您需要将其转换,求平均值,然后再转换回去:
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