我正在努力研究一个简单的篮球运动员数据集 其中包含以下给出的一些基本栏目:
year | teamID | playerID | salary
数据来自1985-2016。我想找到每个团队每年提供的最高平均工资。
我首先使用groupby
,如下所示:
mean_salary_by_year_team = \
salaries.groupby(['yearID', 'teamID'])[['salary']].agg(np.mean)
现在这给了我每支球队和每年的平均薪水。但是,我怎样才能从每年的“薪水”和相应的“teamID”中提取最大值。
请不要给我确切的代码,但我可以参考一个或多个想法。如果我仍然没有得到答案,我会尽力回去:)
答案 0 :(得分: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()]))
OUT:
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