来自另一个数据框的字符串替换

时间:2020-02-19 06:14:47

标签: python python-3.x pandas dataframe

我需要根据其他数据帧中的数据替换列。 必须从另一个数据框中搜索相应的“名称”,并在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)

由于列表很小,我在这里进行了硬编码,但是列表可能会增加。有人可以告诉我如何使用数据框实现相同的功能吗?

1 个答案:

答案 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