MC_schedule_df:
Act_Arr_Run-0 Act_Arr_Run-1 Act_Arr_Run-2 Act_Arr_Run-3
0 2005-08-05 05:15:08 2005-08-05 05:12:00 2005-08-05 05:16:50 2005-08-05 05:09:13
1 2005-08-05 06:18:30 2005-08-05 06:14:50 2005-08-05 06:14:29 2005-08-05 06:07:31
2 2005-08-05 06:22:17 2005-08-05 06:18:06 2005-08-05 06:26:25 2005-08-05 06:22:49
3 2005-08-05 08:52:56 2005-08-05 08:58:51 2005-08-05 09:05:27 2005-08-05 08:58:43
4 2005-08-05 13:04:24 2005-08-05 12:58:11 2005-08-05 13:05:41 2005-08-05 13:02:33
5 2005-08-05 13:22:08 2005-08-05 13:14:44 2005-08-05 13:09:08 2005-08-05 13:12:27
6 2005-08-05 14:26:38 2005-08-05 14:13:38 2005-08-05 14:17:31 2005-08-05 14:17:33
7 2005-08-05 18:08:41 2005-08-05 18:17:15 2005-08-05 18:14:21 2005-08-05 18:15:54
8 2005-08-05 19:46:15 2005-08-05 19:45:28 2005-08-05 19:46:20 2005-08-05 19:48:44
9 2005-08-05 23:13:53 2005-08-05 23:06:06 2005-08-05 23:06:25 2005-08-05 23:04:07
你好
我有上面显示的数据帧(MC_schedule_df),由以下数据类型组成:
In[1]: MC_schedule_df.dtypes
Out[1]:
Act_Arr_Run-0 datetime64[ns]
Act_Arr_Run-1 datetime64[ns]
Act_Arr_Run-2 datetime64[ns]
Act_Arr_Run-3 datetime64[ns]
dtype: object
数据框由日期时间值的行组成,我想计算其中的每行平均值。我尝试了以下代码:
MC_schedule_df = MC_schedule_df.assign(Average=MC_schedule_df.mean(axis=1))
这将导致一列充满NaN值。我试图找出为什么这不起作用,因此阅读了大量文档。我目前的猜测是,Python无法从日期时间值中“分解”适当的信息来计算平均值。
如何计算这些多个Python Pandas datetime64 [ns]值的平均值?任何帮助表示赞赏。
编辑:我尝试了Datetime objects with pandas mean function的方法。但是,此方法不起作用,因为我想计算每行的平均值,因此无法轻松调用该级数。
答案 0 :(得分:0)
您可以使用this answer中显示的内容。正如链接中指出的那样,您无法计算一堆日期的平均值,因此不支持该操作。但是您可以计算出一堆时间增量的平均值。
使用pandas apply函数进行泛化,并将其应用于DataFrame而不是Series。
mean_values = MC_schedule_df.apply(lambda dt : (dt - dt.min()).mean() + dt.min(), axis=1)
使用示例数据框,mean_values
为:
0 2005-08-05 05:13:17.750
1 2005-08-05 06:13:50.000
2 2005-08-05 06:22:24.250
3 2005-08-05 08:58:59.250
4 2005-08-05 13:02:42.250
5 2005-08-05 13:14:36.750
6 2005-08-05 14:18:50.000
7 2005-08-05 18:14:02.750
8 2005-08-05 19:46:41.750
9 2005-08-05 23:07:37.750
dtype: datetime64[ns]