【发布时间】:2021-09-27 19:56:06
【问题描述】:
我有以下数据:
cluster col1 col2 timestamp
0 1 34.000000 89.320000 2021-07-13 21:15:11.232
1 1 97.540001 29.000000 2021-06-13 14:22:11.682
2 3 NaN 1.030000 2021-04-01 10:10:45.623
3 1 NaN 22.670000 2021-06-13 10:54:00.329
4 1 92.339996 NaN 2021-05-13 13:12:01.000
5 2 43.200001 22.450001 2021-03-02 17:05:02.342
6 2 NaN 45.000000 2021-06-13 14:17:11.454
7 2 92.230003 10.000000 2021-06-13 11:22:11.311
8 3 13.000000 1.320000 2021-06-13 18:22:11.324
按集群分组并按时间顺序设置:
df_grouped = df.groupby("cluster").apply(lambda x: x.sort_values(by = "timestamp"))
我的目标是计算每个集群的 col1 和 col2 的均值,并提取最早和最晚的时间。换句话说,我想要以下输出:
cluster col1_mean col2_mean start_time end_time
0 1 74.626666 46.996667 2021-05-13 13:12:01.000 2021-07-13 21:15:11.232
1 2 67.715002 25.816667 2021-03-02 17:05:02.342 2021-06-13 14:17:11.454
2 3 13.0 1.175 2021-04-01 10:10:45.623 2021-06-13 18:22:11.324
但是,时间戳给我带来了一些麻烦,因为我看不到如何计算列的平均值并提取时间。
当时间戳被排除时,我可以通过集群计算平均值:
df_excluding_time.groupby("cluster").mean()
>>
col1 col2
cluster
1 74.626663 46.996666
2 67.715004 25.816668
3 13.000000 1.175000
实现我的目标的最佳方法是什么?
【问题讨论】:
标签: python pandas group-by timestamp mean