为pandas数据框创建新列的条件要求

3

我有一个如下所示的数据框:

Name   IDNum      BossNum
John   1          0
Matt   2          1
Mike   3          2
Jack   4          1

如何创建一个名为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

我目前已经尝试过:
df['BossName'] = df['Name'][df['BossNum'] in df['IDNum']]

这完全没有起作用。有什么想法可以帮助我完成这个任务吗?
2个回答

6
你可以创建一个以索引为 IDNum 的系列Name,然后使用 map
df['BossName'] = df.BossNum.map(df.set_index('IDNum').Name)
df

enter image description here


2
Psidom已经给出了正确的答案,但值得一提的是,您可以显式地创建一个新的Series,仅包含您需要的map
df.BossNum.map(pd.Series(df.Name.values, index=df.IDNum))

这可能比为列数不多的小型DataFrame设置索引略快,但对于具有许多其他列的较大DataFrame来说,肯定会更快,因为在整个DataFrame上设置索引时,随着列数的增加,你会承担一些额外的成本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接