我有一个数据框,其中的一列包含ID列表。 我创建了一个字典,将IDS与一个字符串值相关联。 我想用字符串替换int值。
Name Label_ID
Project1 [1]
Project2 [3,5]
label_map={1:'blue', 3:'green',5:'large'}
我想输出:
Name Label_ID
Project1 [blue]
Project2 [green, large]
我尝试使用:
test['Tags']=test['Label_ID'].map(label_map)
此代码运行,但结果“标签”列仅为NaN。任何指导将不胜感激。
答案 0 :(得分:1)
IIUC,您可以爆炸df,然后映射值,然后沿索引重新应用groupby以获得值。
请注意,您的列表可能是一个字符串,因此我从ast库中添加了原义eval方法。
在这里无法使用地图的原因是,当您需要使用应用逐个或逐个元素地应用列表时,将其应用于列表。
from ast import literal_eval
df["Label_Map"] = (
df["Label_ID"]
.apply(literal_eval) # remove if not needed.
.explode()
.map(label_map)
.groupby(level=0)
.agg(list)
)
print(df)
Name Label_ID Label_Map
0 Project1 [1] [blue]
1 Project2 [3,5] [green, large]