我正在使用NBA Draft数据框,该数据框可以从here获取并通过熊猫读取。
它是这样的:
Player Position ID Draft Year Projected SPM Superstar Starter Role Player Bust
0 Karl-Anthony Towns C karl-anthony-towns 2015 1.030606 0.134767 0.427183 0.163083 0.274967
1 Justise Winslow SF justise-winslow 2015 0.875329 0.083529 0.510905 0.176767 0.228800
2 Stanley Johnson SF stanley-johnson 2015 0.679493 0.067800 0.423733 0.278500 0.229967
3 Jahlil Okafor C jahlil-okafor 2015 0.521661 0.058717 0.409900 0.235533 0.295850
4 D`Angelo Russell PG d-angelo-russell 2015 0.511967 0.152033 0.342283 0.096583 0.409100
现在我正在尝试按position
列分组,并获取每个draft year
中的玩家人数。同时,我想显示superstar
列的中位数。
到目前为止,这是我的代码:
data['Median'] = data['Superstar'].median()
data[data['Draft Year']>=2015].groupby('Position').count()
但是我认为这并不是在喊我想要的东西。有人可以指出正确的方向吗?
提前谢谢
答案 0 :(得分:3)
您可以groupby
并使用agg
df.groupby(['Position', 'Draft Year']).agg({'Superstar':'median', 'Player':'count'})
Superstar Player
Position Draft Year
C 2015 0.096742 2
PG 2015 0.152033 1
SF 2015 0.075664 2
或者您可以创建一个函数
def my_agg(x):
names = {
'Superstar Median': x['Superstar'].median(),
'Player Count': x['Player'].count(),
}
return pd.Series(names, index=['Superstar Median', 'Player Count'])
df.groupby(['Position', 'Draft Year']).apply(my_agg)
Superstar Median Player Count
Position Draft Year
C 2015 0.096742 2.0
PG 2015 0.152033 1.0
SF 2015 0.075664 2.0