在多索引数据框中添加列

时间:2019-10-01 17:10:07

标签: python pandas indexing

我有一个多索引的数据框,其中最左边的索引是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则相对较新,所以这可能是一个简单的问题,但由于每个玩家的开始年份都不一样,所以我不确定该如何处理。

2 个答案:

答案 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。