python - 使用 Pandas 删除具有相同 id 的所有行的最小值高于最小值的行
问题描述
所以,我有以下数据框:
id value
0 a 1
1 a 1
2 a 2
3 b 3
4 b 3
例如,对于 id 为“a”的行,最小值为 1,对于 id 为“b”,最小值为 3,因此不会删除任何行。
输出:
id value
0 a 1
1 a 1
2 b 3
3 b 3
到目前为止,我只对具有相同 id 的行进行了分组,并找到了它们的最低值,但找不到删除所有预期行的方法。我使用了以下命令:
min_values = df.loc[df.groupby(['id'])['value'].idxmin()]['value']
解决方案
使用transform
( idxmin
: 只会返回最小值的第一个索引,在你的情况下你有重复,所以它不会返回所有索引)
df[df.value==df.groupby('id').value.transform('min')]
Out[257]:
id value
0 a 1
1 a 1
3 b 3
4 b 3
推荐阅读
- python - Google Analytics 和 Python - 授权墙
- nginx - 根据主机重写 url
- python - 这个技巧如何通过删除 C 库来暴露 Python 库?(允许猴子修补 ElementTree)
- javascript - 浏览器扩展仅替换为 1img
- python-3.x - 如果 anaconda 有一个包并且它不在 pip 中,我该如何安装它?
- node.js - 启动服务器后“连接已重置”
- javascript - 使用 jquery 从表中显示生成的数据
- c# - 服务器上的 C# HTML.Actionlink 奇怪行为
- angular - 在Angular材料5中创建滚动到顶部按钮
- javascript - 如何在 FireFox 插件中使用 AWS JavaScript 开发工具包(扩展)