python - 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()
,或者有其他方法吗?
解决方案
您可以使用 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
推荐阅读
- c++ - 哪个编译器在模板方法专业化方面是正确的?
- java - 返回相反枚举的优雅方式
- reactjs - React,TypeScript 条件道具
- apache - 将带有查询的 URL 重定向到具有相同查询的新 URL
- r - 使用R中Trend包的Pettitt.test(x)函数对栅格堆栈进行变化点检测
- node.js - Google Sheets API nodejs - 获取包含字符串的单元格的索引
- python-3.x - 我不知道如何在mac中删除python2?
- entity-framework-migrations - 迁移 EF Core 3.1
- tensorflow - Tensorboard 的问题并且没有记录
- gnu-make - 在包含带有 stm32f4xx 的 makefile 的文件时,我遇到了麻烦