英国の郵便番号データを含む変数を含む大きなデータフレーム(DF1)があります。必然的にデータにはいくつかのタイプミスがあります。ただし、正規表現を使用した後、郵便番号データの訂正版(ただし、元の郵便番号が間違っていた行のみ)を含む2番目のデータベースを作成しました.DF2。 (NBインデックス値は必ずしも連続していない。)1つのデータフレームの値をPythonの2番目のデータフレームの値に置き換えます。
id postcode remark
0 1 L93AP Normal
2 2 LD38AH Normal
4 3 SO224ER Normal
6 4 SO21 Too short
8 5 DN379HJ Normal
10 6 M21ORH Zero replaced with O (oh)
12 7 NP745G S replaced with 5
14 8 SE136R2 Z replaced with 2
16 9 BN251ESBN Too long
18 10 TD152EH Normal
訂正されたデータを含むデータフレームは、次のとおりです。
0 1 2 3 pcCorrected
10 M21 0 R H M210RH
12 NP7 4 S G NP74SG
14 SE13 6 R Z SE136RZ
私は2つのデータベースを組み合わせたいようpcCorrected列に新しい値のDF2はDF1データフレームの古いポストコード値を置き換えますが、他のセルの場合、既存のポストコード値はそのまま維持されます。最終的なデータベースは次のようになります。
id postcode remark
0 1 L93AP Normal
2 2 LD38AH Normal
4 3 SO224ER Normal
6 4 SO21 Too short
8 5 DN379HJ Normal
10 6 M210RH Normal
12 7 NP74SG Normal
14 8 SE136RZ Normal
16 9 BN251ESBN Too long
18 10 TD152EH Normal
データベースは非常に大きく(100万行以上)ます。この行動には名前があり、これを行う最も効率的な方法は何ですか?
この回答を最初に読むと、データフレームが変更された場合、マスクに基づいてあるdfから別のdfに列を追加すると、 。しかし、再読みすると、私はこのソリューションがはるかに微妙で安全であることがわかります。単一のdfにマージし、その新しく作成されたdf内の列を操作することは、それらの懸念事項すべてに支払われました。要するに、私はこの答えが本当に好きです。どうもありがとう。 – user1718097
メモリ管理の観点からは、DF2をDF1にマージする方が良いでしょうか? DF1 = DF1.merge(DF2、left_index = True、right_index = True、how = 'left')を使用して、別の新しい(そして大)データフレームを作成するのではなく、 – user1718097
既存の 'DF2'を使う方が良いと思います。最高のテストです。 – jezrael