簡體   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