在DataFrame中计算组之间的差异和平均值

3

I have a Pandas DataFrame which looks as follows:

ID1    ID2     timestamp   x    y
0      0       43          1    40
0      0       53          20   41
0      0       63          21   41
0      1       73          5    100
0      1       75          6    99
0      1       83          7    87
1      0       100         34   23
1      0       200         0    0
1      0       210         0    22
1      0       222         22   15
2      0       300         22   15
2      1       450         22   15
2      1       451         22   15

现在,对于每组ID1和ID2,我想要计算时间差(最大时间戳 - 最小时间戳)以及x和y的平均值。结果数据框应如下所示:
ID1    ID2     timestamp   x    y
0      0       20          14   40.6
0      1       10          6    95.3
1      0       110         14   15
2      0       300         22   15
2      1       1           22   15

如何实现这个功能?我可以使用df.groupby(["ID1", "ID2"])来进行分组,但是我不知道如何在原位计算差异和平均值。

3个回答

3
应该是这样的:
df.groupby(["ID1", "ID2"]).agg({
   'timestamp': lambda x: x.max() - x.min(),
   'x': 'mean',
   'y': 'mean'
}).reset_index()

1

我将使用 np.ptp


df.groupby(['ID1','ID2'],as_index=False).agg({'timestamp':np.ptp,'x':'mean','y':'mean'})
   ID1  ID2  timestamp   x          y
0    0    0         20  14  40.666667
1    0    1         10   6  95.333333
2    1    0        122  14  15.000000
3    2    0          0  22  15.000000
4    2    1          1  22  15.000000

-1

由于您没有提供尝试过的内容,我猜测阅读这篇文档可能对您的问题有很大帮助。

在该页面的开头, 详细解释了分割-应用-合并方法。

希望这能帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接