pandas 根据相同的时间戳计算中值

pandas calculating median values based on the same time stamps

我想根据与 Pandas 相同的时间戳计算数据的中值。

我的部分数据框示例如下所示

timestamp data
8/2/2021 16:11:34 30
8/2/2021 16:11:34 32
8/2/2021 16:11:34 50
10/12/2021 19:25:17 40
10/12/2021 19:25:17 50
10/12/2021 19:25:17 60

我希望这个 df 看起来像这样:

timestamp data median
8/2/2021 16:11:34 30 32
8/2/2021 16:11:34 32 32
8/2/2021 16:11:34 50 32
10/12/2021 19:25:17 40 50
10/12/2021 19:25:17 50 50
10/12/2021 19:25:17 60 50

我正在考虑创建一个新列并创建一个 for 循环 将相同时间戳的数据收集到数组中然后计算, 但也认为计算时间可能太长(数据记录在 30,000 左右) 寻找简单的解决方案但找不到解决方案。 任何建议将不胜感激。

一种选择是在 groupby.transform 中调用 median。它 returns 具有与 df 相同索引的系列,其中填充了每个组的转换中值。

df['median'] = df.groupby('timestamp').transform('median')

输出:

             timestamp  data  median
0    8/2/2021 16:11:34    30    32.0
1    8/2/2021 16:11:34    32    32.0
2    8/2/2021 16:11:34    50    32.0
3  10/12/2021 19:25:17    40    50.0
4  10/12/2021 19:25:17    50    50.0
5  10/12/2021 19:25:17    60    50.0