簡體   English   中英

如何比較兩列並從第三列返回值 Pandas dataframe

[英]How to compare two columns and return value from a third column in Pandas dataframe

樣本數據

sample = ({'name':['Delinquency Rate','Cumulative Probability'],
           'value':['Dlnqy','Prbblty'],
           'new_name':['Dlnqncy Rt','Cmltv Prbblty']})

test = pd.DataFrame(sample)

test

new_name 是通過從“name”中刪除所有元音創建的。 我想比較“新名稱”中“值”的前 3 個字符和“每個單詞”的前 3 個字符,如果它們匹配,我想從名稱列中返回值。 例如'Dln' in value 存在於new_name 的'Dlnqncy' 中,所以我們將從name 中返回'Delinquency'。 邏輯應該像

'if value[:3] in new_name[:3] then return name'

以下是我到目前為止所擁有的,如果我只有兩列,它就可以正常工作。 但是如果我想比較 value 和 new_name 並重新調整名稱,它就不起作用了。

def get_matches(name, value, new_name, default=''):
    return next( (word for word in new_name.split() if str(value)[:3] in word[:3]),default)


test['match'] = test[['name', 'value', 'new_name']].apply(lambda row: get_matches(*row, default=' '), axis=1)

在下表中,“匹配”列應該有“拖欠”和“概率”(因為它在“名稱”列中)

在此處輸入圖像描述

給你go:

(test
 .assign(match=lambda x: np.where((x.new_name.str[:3] == x.value.str[:3]), x.name, x.value))
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM