在python中查找多个组中的最大值
Posted
技术标签:
【中文标题】在python中查找多个组中的最大值【英文标题】:Find the highest value within multiple groups in python 【发布时间】:2021-12-20 22:12:22 【问题描述】:我试图找出每个名字在每十年内的最高薪水。下面是我的示例数据集和代码行
| Bins | Name | Salary |
|-------|------|--------|
| 1990s | Ron | 8000 |
| 1990s | Ron | 8500 |
| 2000s | Hary | 7000 |
| 1980s | Ron | 6800 |
| 2010s | John | 10000 |
| 2010s | John | 21000 |
df.sort_values(by='Salary', ascending=False).groupby('Bins').reset_index()
但我不断收到错误:“需要重新包装系列中的列以应用关键功能”
我想要的输出应该是这样的:
| Bins | Name | Salary |
|-------|------|--------|
| 1980s | Ron | 6800 |
| 1990s | Ron | 8500 |
| 2000s | Hary | 7000 |
| 2010s | John | 21000 |
【问题讨论】:
让我知道我的解决方案是否适合您或需要任何微调。谢谢! 【参考方案1】:您可以按['Bins', 'Name']
分组并使用GroupBy.first()
获取组内的最高值(由于您已按降序对值进行排序,因此组内的第一个条目是具有最高值的条目):
df.sort_values(by='Salary', ascending=False).groupby(['Bins', 'Name']).first().reset_index()
结果:
Bins Name Salary
0 1980s Ron 6800
1 1990s Ron 8500
2 2000s Hary 7000
3 2010s John 21000
另一种方法是按['Bins', 'Name']
分组并使用GroupBy.max()
df.groupby(['Bins', 'Name'], as_index=False)['Salary'].max()
同样的结果。
【讨论】:
【参考方案2】:这应该可行:
df.groupby('Bins').max().reset_index()
【讨论】:
我仍然收到错误“将密钥添加到排除项”以上是关于在python中查找多个组中的最大值的主要内容,如果未能解决你的问题,请参考以下文章