繁体   English   中英

从另一个数据帧获取数据

[英]Fetch data from another dataframe

我之前问过一个问题,但由于最初的问题被认为是重复的,所以它被关闭了。

但我正在尝试与该线程以及重复线程不同的东西。

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

所以请不要关闭这个线程。 谢谢。

我需要根据来自另一个数据帧的数据替换我的列。 必须从其他数据框中搜索相应的“名称”,并在 df1 中包含“change_name”

数据帧 1:

ID  name
1   cat
2   jack
3   snake
4   monkey

数据帧 2:

name    change_name
cat     meow
jack    oooo 
snake   ssss
monkey 
note    money
pencil pen

预期输出:

ID  name
1   cat      meow
2   jack     oooo
3   snake    ssss
4   monkey   nan
5   note    money
6   pencil pen

我必须这样做:

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)

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

一个简单的合并就可以做到。
然后因为你想要df2中不在df1连接它们。

pd.concat([df1.merge(df2),df2[~df2['name'].isin(df1['name'])]]

结果:

In [23]: pd.concat([df1.merge(df2),df2[~df2['name'].isin(df1['name'])]])
Out[23]: 
    ID    name change_name
0  1.0     cat        meow
1  2.0    jack        oooo
2  3.0   snake        ssss
3  4.0  monkey        None
4  NaN    note       money
5  NaN  pencil         pen

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM