首页 > 解决方案 > pandas 聚合数据,同时保持一列不变

问题描述

我有一个数据框,一个:

a=pd.DataFrame({'ID': [1,1,2,2,3,4], 'B': [1,5,3,2,4,1], 'C': [1,4,3,6,1,1]})

   ID  B  C
0   1  1  1
1   1  5  4
2   2  3  3
3   2  2  6
4   3  4  1
5   4  1  1

我想聚合它,以便生成的新数据帧将按 ID 分组并返回与 B 的 min 对应的行(因此在 B 上应用 min() 并按原样携带 C。

所以生成的数据框应该是:

   ID  B  C
0   1  1  1
1   2  2  6
2   3  4  1
3   4  1  1

如何使用 以编程方式执行此操作pandas.groupby(),或者有其他方法吗?

标签: pythonpython-3.xpandas

解决方案


您可以使用 groupby 和 transform 来过滤行

a.loc[a['B'] == a.groupby('ID').B.transform('min')]

    B   C   ID
0   1   1   1
3   2   6   2
4   4   1   3
5   1   1   4

推荐阅读