从另一列为特定名称在新列中赋值

0 投票
1 回答
31 浏览
提问于 2025-04-14 17:21
def construct(x):
  for i in x:
    if i=="Orion":
      return 0.131
    elif i=="Omega":
      return 0.148
    elif i=="Oyster":
      return 0.106
    elif i=="Skyraa":
      return 0

merged_df['Tower construct %']=construct(merged_df['Tower'])

根据上面的函数,我想在一个新列中把特定的数字和来自另一列的名字对应起来,但在新列中我只得到了数字0.131,这是什么问题呢?

1 个回答

0

一个可能的解决办法是:把函数里的for循环去掉,改用 pd.Series.map

def construct(val):
    if val == "Orion":
        return 0.131
    elif val == "Omega":
        return 0.148
    elif val == "Oyster":
        return 0.106
    elif val == "Skyraa":
        return 0


merged_df["Tower construct %"] = merged_df["Tower"].map(construct)
print(merged_df)

输出结果:

    Tower  Tower construct %
0   Orion              0.131
1   Omega              0.148
2  Oyster              0.106
3  Skyraa              0.000

撰写回答