为pandas dataframe创建新列的条件要求

joh*_*nyb 3 python python-3.x pandas

我有一个如下数据框:

Name   IDNum      BossNum
John   1          0
Matt   2          1
Mike   3          2
Jack   4          1
Run Code Online (Sandbox Code Playgroud)

如何创建一个名为BossName的附加列,如下所示:

预期产出:

Name   IDNum      BossNum     BossName
John   1          0           John/none (I don't care about boss being ided)
Matt   2          1           John
Mike   3          2           Matt
Jack   4          1           John
Run Code Online (Sandbox Code Playgroud)

我目前已经尝试过:

df['BossName'] = df['Name'][df['BossNum'] in df['IDNum']]
Run Code Online (Sandbox Code Playgroud)

这根本不起作用.关于如何实现这一点的任何想法都会很棒.

Psi*_*dom 6

您可以创建一个Name索引为的系列IDNum,然后使用map:

df['BossName'] = df.BossNum.map(df.set_index('IDNum').Name)
df
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述