pandasデータフレーム列の部分文字列が同じデータフレーム内の別の列の部分文字列に存在するかどうかを確認するにはどうすればよいですか?

ソハム

次のような列を持つデータフレームがあります。

  A                               B
0  - 5923FoxRd                    5923 Fox Rd
1 631 Newhaven Ave                Modesto
2 Saratoga Street, Suite 200      Saratoga Street, Suite 200

Bの値と一致するAの値を使用してリストを作成したいと思います。リストは[-5923FoxRd、Saratoga Street、Suite 200 ...]のようになります。これを行う最も簡単な方法は何ですか?

デビッドエリクソン

少しでも効果を上げるには、次の手順を実行します。

  1. 列ごとに新しいシリーズを作成し、正規表現パターン\W+をに渡しますstr.replace()
  2. 使用する str.lower()
  3. 作成し正常化するためにリストを交換driveするdravenueaveなど、

s1 = df['A'].str.replace('\W+', '').str.lower()
s2 = df['B'].str.replace('\W+', '').str.lower()
lst = [*df[s1==s2]['A']]
lst
Out[1]: ['- 5923FoxRd', 'Saratoga Street, Suite 200']

これは次のようにs1なりs2ます。

print(s1,s2)

0                 5923foxrd
1            631newhavenave
2    saratogastreetsuite200
Name: A, dtype: object

0                 5923foxrd
1                   modesto
2    saratogastreetsuite200
Name: B, dtype: object

そこから、次のようにデータをさらに正規化するために、いくつかの置換値を作成することができます。

to_replace = ['drive', 'avenue', 'street']
replaced = ['dr', 'ave', 'str']

to_replace = ['drive', 'avenue', 'street']
replaced = ['dr', 'ave', 'str']
s1 = df['A'].str.replace('\W+', '').str.lower().replace(to_replace, replaced, regex=True)
s2 = df['B'].str.replace('\W+', '').str.lower().replace(to_replace, replaced, regex=True)
lst = [*df[s1==s2]['A']]
lst
print(s1,s2)
0              5923foxrd
1         631newhavenave
2    saratogastrsuite200
Name: A, dtype: object

0              5923foxrd
1                modesto
2    saratogastrsuite200
Name: B, dtype: object

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ