如何根据层次结构计算列值

jre*_*yez 6 python numpy pandas

假设我们在层次结构方面同意以下顺序.

宝贝 - >孩子 - >少年 - >成人

我有这个数据集

           Name         Stage  Highest_Stage_Reached
0          Adam         Child  
1         Barry         Child
2           Ben         Adult
3          Adam      Teenager
4         Barry         Adult
5           Ben         Baby
Run Code Online (Sandbox Code Playgroud)

我如何让数据集像这样填充Highest_Stage_Reached字段?

           Name         Stage  Highest_Stage_Reached
0          Adam         Child  Teenager
1         Barry         Child  Adult
2           Ben         Adult  Adult
3          Adam      Teenager  Teenager
4         Barry         Adult  Adult
5           Ben         Baby   Adult
Run Code Online (Sandbox Code Playgroud)

Vai*_*ali 1

使用 order 参数将列转换为分类列。现在它可以让你排序。这也将支持 Stage 中可变数量的参数。

df['Stage'] = pd.Categorical(df['Stage'], ordered=True, categories=['Baby', 'Child','Teenager','Adult'])

df['Highest_Stage_Reached'] = df.groupby('Name').Stage.transform('max')

    Name    Stage       Highest_Stage_Reached
0   Adam    Child       Teenager
1   Barry   Child       Adult
2   Ben     Adult       Adult
3   Adam    Teenager    Teenager
4   Barry   Adult       Adult
5   Ben     Baby        Adult
Run Code Online (Sandbox Code Playgroud)