2015-03-31 25 views
1

我正在玩网络上的mlb数据集来帮助学习。 数据框看起来像如何使用groupby对象获取其他列的总和?

Player    Position   Salary  Year 
0 Mike Witt   Pitcher   1400000 1988 
1 George Hendrick Outfielder  989333  1988 
2 Chili Davis  Outfielder  950000  1988 
3 Brian Downing  Designated Hitter 900000  1988 
4 Bob Boone   Catcher   883000  1988 
. 
. 
. 

作为一个实验,我试图找到已累计通过他们的职业生涯的最高工资总额的投手。 mlb是数据帧。

到目前为止,我曾尝试:

mask = mlb.Position == "Pitcher" 
pitchers = mlb[mask] 
pitcher_groups = pitchers.groupby("Player") 

我不知道如何与GROUPBY对象进行。我知道我需要在每个组中找到工资总额,并进行某种比较......如何在没有for循环的情况下执行此操作?

回答

1

只要做到:

pitcher_groups['Salary'].sum() 

这求和GROUPBY对象的工资列。

In [57]: 

df[df['Position']=='Pitcher'].groupby('Player')['Salary'].sum() 
Out[57]: 
Player 
Mike Witt 1400000 
Name: Salary, dtype: int64 
0

利用以下的:

pitcher_groups = pitchers[['Player','Salary']].groupby('Player', sort=True).sum() 
相关问题