トランザクションが行われたベンダーの名前を収集するPandasデータフレームがあります。このデータは銀行の明細書から自動的に収集されるため、多くのベンダーが類似していますが、全く同じではありません。要約すると、ベンダーの名前の異なる順列を単一の名前に置き換えたいと考えています。同様の文字列を同じ文字列で置き換えます。
私はそれを行う方法を考えることができます(下記参照)が、私は初心者であり、これは複雑な問題のようです。私は本当に経験豊富なコーダーがそれにどのようにアプローチするかを知りたいと思っています。私はこのようなデータフレーム
(実際の生活の中で、それは約20の列と約50行の最大だ)している:
Groceries Car Luxuries
0 Sainsburys Texaco wst453 Amazon
1 Sainsburys bur Texaco east Firebox Ltd
2 Sainsbury's east Shell wstl Sony
3 Tesco Shell p/stn Sony ent nrk
4 Tescos ref 657 Texac Amazon EU
5 Tesco 45783 Moto Amazon marketplace
私は類似したエントリを検索し、最初に置き換えるしたいのですがこれらのエントリの例ですので、私はこれで終わるでしょう:
Groceries Car Luxuries
0 Sainsburys Texaco wst453 Amazon
1 Sainsburys Texaco wst453 Firebox Ltd
2 Sainsburys Shell wstl Sony
3 Tesco Shell wstl Sony
4 Tesco Texaco wst453 Amazon
5 Tesco Moto Amazon
私の解決策は最適ではないかもしれません。私はアルファベット順に並べ替えることを考えていましたが、bitwiseを使ってdifflibのSequenceMatcherのようなものを使って各ベンダーを比較しました。類似度があるパーセンテージ以上であれば(私が満足するまでこの値で遊ぶことを期待しています)、2つのベンダーは同じとみなされます。私はナットを裂くためにスレッジハンマーを使用しているかもしれないことに懸念しています。あるいは、長い時間がかかるかもしれません(私はパフォーマンスに執着していませんが、同様に私は結果を待っていません)。
この問題に関する人々の考えを本当に興味があります!
私はあなたが同じ名前を持つ必要があるすべてのレコードで最初の単語が同じであれば簡単かもしれないと思います。 'Tesco'を使うのではなく' Tesco'しかありません。さもなければ、類似性を調べる必要があります。 – 0p3n5ourcE
ええ、最初の単語は必ずしも同じではありません。残念ながら、何らかの点で類似性のチェックが必要なようです。 – user4896331