在Python Pandas中查找ID的最小值、最大值和平均值

5

我有两个Python Pandas的数据框(Dataframes)。假设第一个数据框是df1。id列未必按顺序排列。

   id  B  C
0   1  5  1
1   1  5  1
2   1  6  1
3   1  7  1
4   2  5  1
5   2  6  1
6   2  6  1
7   3  7  1
8   3  7  1
9   4  6  1
10  4  7  1
11  4  7  1

然后第二个数据框 df2 有一列包含了 id 的唯一值。

   id
0   1
1   2
2   3
3   4

我希望为每个id计算列B的最小值、最大值和平均值,并将其添加到第二个数据框中。结果如下所示:
   id  min  max  avg
0   1   5    7   5.75
1   2  ..
2   3  ..
3   4  ..

在这个例子中,我可以通过手动为每个 id 计算它们来复制它。这没问题,因为这个例子只有4个id。但是我的实际例子有超过1000个id。有没有自动的方法来完成它?
1个回答

11

在分组上使用agg函数

In [96]: df.groupby('id')['B'].agg([pd.np.min, pd.np.max, pd.np.mean])
Out[96]:
    amin  amax      mean
id
1      5     7  5.750000
2      5     6  5.666667
3      7     7  7.000000
4      6     7  6.666667

5
你可以在这里使用 df.groupby('id')['B'].agg(['min','max','mean']) - EdChum
没错,我是在提示你可以使用NumPy函数进行聚合。 - Zero
我想在尝试之前很难知道哪些ufunc已经将字符串映射到它们的np等效项。 - EdChum

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