我有一个如下数据框:
if RainFall == 2:
print("This summer has been a perfect summer, the plants have multiplied.")
for Row in range(FIELDLENGTH):
for Column in range(FIELDWIDTH):
if Field[Row][Column] == PLANT:
if Field[Row + 1][Column] != ROCKS:
Field[Row + 1][Column] = GOODSUMMER
if Field[Row - 1][Column] != ROCKS:
Field[Row - 1][Column] = GOODSUMMER
if Field[Row + 1][Column + 1] != ROCKS:
Field[Row + 1][Column + 1] = GOODSUMMER
if Field[Row - 1][Column - 1] != ROCKS:
Field[Row - 1][Column - 1] = GOODSUMMER
if Field[Row][Column + 1] != ROCKS:
Field[Row][Column + 1] = GOODSUMMER
if Field[Row][Column - 1] != ROCKS:
Field[Row][Column - 1] = GOODSUMMER
if Field[Row + 1][Column + 1] != ROCKS:
Field[Row + 1][Column - 1] = GOODSUMMER
if Field[Row - 1][Column + 1] != ROCKS:
Field[Row - 1][Column + 1] = GOODSUMMER
break
如何创建一个名为BossName的附加列,如下所示:
预期产出:
Name IDNum BossNum
John 1 0
Matt 2 1
Mike 3 2
Jack 4 1
我目前尝试过:
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
这根本不起作用。关于如何实现这一点的任何想法都会很棒。
答案 0 :(得分:6)
答案 1 :(得分:2)
Psidom已经为您提供了正确的答案,但同样值得一提的是,您可以明确地为map
创建一个仅包含您需要的新系列。
df.BossNum.map(pd.Series(df.Name.values, index=df.IDNum))
这可能比为没有很多列的小型DataFrame设置索引要快一些,但对于包含许多其他列的较大DataFrame肯定会更快,因为当您设置索引时列数增加会产生一些额外成本在整个DataFrame上。