我試圖為每個給定的名字找到每十年內的最高薪水。下面是我的示例資料集和代碼行
| 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 |
uj5u.com熱心網友回復:
這應該有效:
df.groupby('Bins').max().reset_index()
uj5u.com熱心網友回復:
您可以 group by['Bins', 'Name']和 useGroupBy.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()
結果一樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/353860.html
