我需要根据其他数据帧中的数据替换列。 必须从另一个数据框中搜索相应的“名称”,并在df1中包含“ change_name”
df1:
ID name
1 cat
2 jack
3 snake
4 monkey
df2:
name change_name
cat meow
jack oooo
snake ssss
monkey
输出:
ID name
1 cat meow
2 jack oooo
3 snake ssss
4 monkey nan
对不起,我不得不编辑我的问题。
我必须像下面这样:
def map_name(name):
elif name == 'cat':
return 'meow'
elif name == 'jack':
return 'oooo'
elif name == 'snake':
return 'ssss'
elif name == 'monkey ':
return None
else
return name
df1['name'] = df1['name'].apply(map_name)
由于列表很小,我在这里进行了硬编码,但是列表可能会增加。有人可以告诉我如何使用数据框实现相同的功能吗?
答案 0 :(得分:2)
我认为您需要:
d = {k:v for k,v in zip(df1["name"], df1["change_name"])}
df["new_name"] = df["name"].map(d)
df.dropna(subset=["new_name"], inplace=True)
print(df)
输出:
ID name new_name
0 1 cat meow
1 2 jack oooo
2 3 snake ssss