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

标签 python pandas numpy

假设我们同意以下层次结构顺序。

婴儿 --> child --> 青少年 --> 成人

我有这个数据集

           Name         Stage  Highest_Stage_Reached
0          Adam         Child  
1         Barry         Child
2           Ben         Adult
3          Adam      Teenager
4         Barry         Adult
5           Ben         Baby

我如何让数据集像这样填充 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

最佳答案

您可以使用:

d={'Baby':0,'Child':1,'Teenager':2,'Adult':3}
df['rank']=df.Stage.map(d)
df['Highest_Stage_Reached']=df.groupby('Name')['rank'].transform('max').\
                                         map({v: k for k, v in d.items()})
print(df.drop('rank',1))

    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

关于python - 如何根据层次结构计算列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855023/

相关文章:

带有语句的 Python

python - 如何在循环内发出警告并再次请求 raw_input

python - 将 pd.value_counts() 和定义的变量附加到一行数据帧

python - 如何用numpy实现tf.space_to_depth?

python - 将 erf 函数拟合到数据

Python:将unicode变量转换为字符串变量

python - input() 与 sys.stdin.read()

python - 如何修改 Pandas 的 Read_html 用户代理?

python - 将列表列表插入 pandas df 的单列

python - 从两个 num.nd 数组中选择行并为缺失的匹配项插入 0