始める無料で始める

つなぎ合わせましょう!

前のレッスンでは、restaurantsrestaurants_new をリンクする作業の大部分を終えました。潜在的に一致する行の組を作成し、cuisine_typecity 列では完全一致を探しつつ、rest_name 列では類似文字列の比較を行いました。スコアを含む DataFrame は potential_matches に保存してあります。

いよいよ両方の DataFrame をリンクします。まず、上記の列で一致した restaurants_new のすべての行インデックスを potential_matches から取り出します。次に、これらのインデックスで restaurants_new をサブセット化し、最後に重複していない値を restaurants と連結します。すべての DataFrame は環境に用意されており、pandaspd としてインポート済みです。

この演習はコースの一部です

Pythonで学ぶデータクリーニング

コースを見る

演習の手順

  • .sum() メソッドを使って、行合計が3以上の potential_matches のインスタンスを抽出します。
  • .get_level_values() メソッドを使い、matches から第2の列インデックスを取り出します。これは restaurants_new の一致レコードの行インデックスを表します。
  • matching_indices に含まれていない行を対象に、restaurants_new をサブセット化します。
  • restaurantsnon_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)
コードを編集して実行