从另一列为特定名称在新列中赋值
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