我有一个如下所示的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"])
进行分组,但是我不知道该如何计算差异和均值。
答案 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方法。
希望这会有所帮助。