计算DataFrame中各组的差异和均值

时间:2019-06-04 23:11:03

标签: python pandas dataframe pandas-groupby

我有一个如下所示的Pandas DataFrame:

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 个答案:

答案 0 :(得分:2)

应该是这样的:

df.groupby(["ID1", "ID2"]).agg({
   'timestamp': lambda x: x.max() - x.min(),
   'x': 'mean',
   'y': 'mean'
}).reset_index()

答案 1 :(得分:1)

我将使用#include <stdlib.h> /* srand, rand */ #include <time.h> /* time */ #include <iostream> double randomnumber() { double r1 = (double)rand() / RAND_MAX; return r1; } int main() { srand(time(NULL)); std::cout << randomnumber() << std::endl; }

np.ptp

答案 2 :(得分:-1)

由于您没有发布尝试的内容,因此我认为在this piece阅读文档可能对您的问题有很大帮助。

At the beginning of that page,介绍了split-apply-combine方法。

希望这会有所帮助。