つなぎ合わせましょう!
前のレッスンでは、restaurants と restaurants_new をリンクする作業の大部分を終えました。潜在的に一致する行の組を作成し、cuisine_type と city 列では完全一致を探しつつ、rest_name 列では類似文字列の比較を行いました。スコアを含む DataFrame は potential_matches に保存してあります。
いよいよ両方の DataFrame をリンクします。まず、上記の列で一致した restaurants_new のすべての行インデックスを potential_matches から取り出します。次に、これらのインデックスで restaurants_new をサブセット化し、最後に重複していない値を restaurants と連結します。すべての DataFrame は環境に用意されており、pandas は pd としてインポート済みです。
この演習はコースの一部です
Pythonで学ぶデータクリーニング
演習の手順
.sum()メソッドを使って、行合計が3以上のpotential_matchesのインスタンスを抽出します。.get_level_values()メソッドを使い、matchesから第2の列インデックスを取り出します。これはrestaurants_newの一致レコードの行インデックスを表します。matching_indicesに含まれていない行を対象に、restaurants_newをサブセット化します。restaurantsとnon_dupを連結します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Isolate potential matches with row sum >=3
matches = ____[____.___(____) >= ____]
# Get values of second column index of matches
matching_indices = matches.____.____(____)
# Subset restaurants_new based on non-duplicate values
non_dup = ____[~restaurants_new.index.____(____)]
# Concatenate restaurants and non_dup
full_restaurants = pd.____([____, ____])
print(full_restaurants)