我有一个多索引的数据框,其中最左边的索引是NBA Player,第二级索引是NBA Season(即2018-19)。我想添加一列,为每个球员赛季编号。例如,在下面的日期框架的顶部,我想在季节旁边添加一列,列出A.J.盖顿的2000-01赛季为“ 1”,而他的2001-02赛季为“ 2”。然后整个数据帧中的下一个播放器将重复该过程。
Age Tm OBPM BPM DBPM
Player Season
A.J. Guyton 2000-01 22 CHI -0.57 -2.8 -2.1
2001-02 23 CHI -0.80 -3.4 -2.4
A.J. Price 2009-10 23 IND -0.75 -2.2 -1.1
2010-11 24 IND -1.51 -3.1 -1.0
2011-12 25 IND -0.35 -2.2 -1.4
我对熊猫不熟悉,而对Python则相对较新,所以这可能是一个简单的问题,但由于每个玩家的开始年份都不一样,所以我不确定该如何处理。
答案 0 :(得分:1)
您可以在groupby和cumcount中使用split / apply / combine模式。 cumcount充当transform,它返回与原始数据帧具有相同索引的序列,而聚合(如均值)则为每个组返回一个值。
df['career_year'] = df.groupby(level='Player').cumcount()
有了您的数据,这将给
Age Tm OBPM BPM DBPM career_year
Player Season
A.J. Guyton 2000-01 22 CHI -0.57 -2.8 -2.1 0
2001-02 23 CHI -0.80 -3.4 -2.4 1
A.J. Price 2009-10 23 IND -0.75 -2.2 -1.1 0
2010-11 24 IND -1.51 -3.1 -1.0 1
2011-12 25 IND -0.35 -2.2 -1.4 2
答案 1 :(得分:0)
您应该包含有关如何生成样本数据的代码。使其他人更容易帮助您。
dataframe['Season'] = 2
将创建一个新的“季节”列,并填充2。