【问题标题】:String replacement from another dataframe [duplicate]来自另一个数据帧的字符串替换[重复]
【发布时间】:2020-06-03 06:07:05
【问题描述】:

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

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

【问题讨论】:

  • 将merge 与dropna 一起使用,即df.merge(df2.dropna(),on="name")。

标签: python python-3.x pandas dataframe


【解决方案1】:

我认为你需要:

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

【讨论】:

  • 字典理解不是必需的,检查欺骗。
猜你喜欢
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-27
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多