我有兩個DataFrame
對象,每個對象包含2列字符串數據。我需要比較列a
和b
與c
和d
,然後根據最高匹配率合併兩個DataFrame
對象。Python Pandas - SequenceMatch列中每個值和返回收藏夾匹配
DF1 DF2
a b c d
apple paster doser ankle
bac bur are bun
sit sign and lake
car bun ape mason
alli makeup noodle paster
示例輸出
RESULT
a b c d comparison_ratio
apple paster noodle paster 1
bac bur are bun 0.95
sit sign and lake random number based on match
car bun are bun 1
alli makeup noodle paster random number based on match
顯然比是絕配由預留1
我可以遍歷每個DataFrame
對象的每一行,並應用difflib.SequenceMatcher
函數返回比率,然後將最大比率與相應的數據一起設置爲該線上的值,但考慮到數據量有多大,這將花費很長時間。我很好奇,如果我能以某種方式使用apply
跨越兩個DataFrame
對象
這似乎只是數據幀列之間的一項檢查,我需要對列c和列d中的所有項目檢查列索引1,然後查找最大匹配率並將c和d中的最大匹配比率值連接到該行。這就是爲什麼結果df改變的結果df –
@AranFreel啊,好吧......儘管如此,仍然不完全確定所有的比較。作爲一個例子,你可以從'df1'中拿出'apple'和'paster',告訴我你想要的兩兩比較嗎? –
帶貼紙和蘋果的DF1將在DF2中與排貼面貼紙相匹配,因爲DF1中的b是貼紙,DF2中的d是貼紙。索引0列a和b(apple和paster)中的值都將與列c和d中的所有值進行比較。 Apple將與列c和列d中的每個值進行比較。帕斯特也會這樣做。比較所有值後,最大比率匹配將從DF2行取得,並連接到發生比較的DF1(蘋果和貼紙) –