2つの列の文字列データをそれぞれ2つ含むDataFrame
オブジェクトがあります。 a
とb
の列をc
とd
と比較し、最も高い一致率に基づいて2つの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
関数を適用することができ比率を計算し、対応するデータと共に最大比をとってその行の値を設定しますが、データの大きさを考えると非常に長い時間がかかります。私は何とか2つのDataFrame
オブジェクト間で
これは、データフレーム列の間の単純なチェックのようです。列cと列dのすべての項目に対してインデックス1の列を確認し、最大一致率を見つけ、cとdの最大一致率の値をその行に連結する必要があります。だから、結果dfが結果dfで変わったのはなぜでしょうか? –
@AranFreelああ、大丈夫...すべての比較はまだ完全には分かっていません。例として、 'df1'から' apple'と 'paster'を取り出して、あなたが欲しいペアワイズ比較を教えてください。 –
DF1のbがパスター、DF2のdがパスタであるため、パスタとリンゴの付いたDF1は、DF2の中でヌードルパスタを持つ列と一致します。インデックス0の列aとb(リンゴとペースト)の両方の値は、列cとdのすべての値と比較されます。アップルは列cと列dの各値と比較します。パスタも同じことをするでしょう。すべての値を比較した後、DF2の行から最大比率の一致が得られ、比較が行われたDF1に連結されます(リンゴとペースト) –