次のような列を持つデータフレームがあります。
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 ...]のようになります。これを行う最も簡単な方法は何ですか?
少しでも効果を上げるには、次の手順を実行します。
\W+
をに渡しますstr.replace()
str.lower()
drive
するdr
、avenue
とave
など、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]
コメントを追加