【问题标题】:Pandas: Need to find the Highest Salary by each team each year熊猫:需要找到每个团队每年的最高薪水
【发布时间】:2018-08-24 18:51:52
【问题描述】:

我正在尝试处理一个简单的篮球运动员数据集 其中包含下面给出的一些基本列:

year | teamID | playerID | salary

数据来自 1985-2016 年。我正在尝试找到每个团队每年提供的最高平均工资

我最初使用groupby如下:

mean_salary_by_year_team = \
salaries.groupby(['yearID', 'teamID'])[['salary']].agg(np.mean)

现在这给了我每个团队和每年的平均工资。但是,我怎样才能从 'salary' 和相应的 'teamID' 中提取每年的最大值。

请不要给我确切的代码,而是我可以参考的想法或功能。如果我仍然没有得到答案,我会尝试回来:)

【问题讨论】:

  • Stack Overflow 的结构是这样的,如果您提供示例数据并期望得到实际答案而不是“想法”,您的问题会更好。这里不鼓励提示。
  • 也许您可以使用不同的聚合函数来代替np.mean
  • 有人能解释一下为什么我的问题有 4 票反对吗?我不介意投反对票,它只会从下一次帮助我:)

标签: python pandas data-analysis


【解决方案1】:

我只能假设您正在寻找这样的东西:

import pandas as pd
df = pd.DataFrame({'Year':[1,1,1,2,2,2], 'TeamID':[1,2,3,1,2,3], 'Salary':[100,200,300,150,350,250]})
df = df[['Year','TeamID','Salary']]
print('DATAFRAME:')
print(df)

print('MEAN SALARY:')
print(df.groupby('Year').agg({'Salary':'mean'}))

print('MAX SALARY:')
print(df.groupby('Year').apply(lambda x: x[x['Salary'] == x['Salary'].max()]))

print('MIN SALARY:')
print(df.groupby('Year').apply(lambda x: x[x['Salary'] == x['Salary'].min()]))

输出:

DATAFRAME:
    Year  TeamID  Salary
0     1       1     100
1     1       2     200
2     1       3     300
3     2       1     150
4     2       2     350
5     2       3     250

MEAN SALARY:
      Salary
Year        
1        200
2        250

MAX SALARY:
        Year  TeamID  Salary
Year                        
1    2     1       3     300
2    4     2       2     350

MIN SALARY:
        Year  TeamID  Salary
Year                        
1    0     1       1     100
2    3     2       1     150

【讨论】:

  • 谢谢克里斯 :) 我得到了我想要的东西。我正在寻找应用于工资列的最大工资函数,同时保留其他列。就我而言,这是第二个 groupby() 应用于我已经提到的那个:) 不知何故我无法保留“teamID”列。谢谢你
猜你喜欢
  • 1970-01-01
  • 2013-11-14
  • 2021-03-04
  • 2016-07-24
  • 2019-05-04
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多