始める無料で始める

列の追加(2)

iterrows()を使ってPandas DataFrameのすべての観測値を反復処理する方法は理解しやすいですが、あまり効率的ではありません。各反復で、新しいPandas Seriesを作成しているからです。

DataFrameに列を追加する際に、別の列に関数を呼び出して処理する場合、iterrows() メソッドとforループを組み合わせる方法は推奨される方法ではありません。代わりに、apply()を使いましょう。

bricsDataFrameで同じ結果を得るために、iterrows()を使ったバージョンとapply()を使ったバージョンを比較してみましょう。

for lab, row in brics.iterrows() :
    brics.loc[lab, "name_length"] = len(row["country"])

brics["name_length"] = brics["country"].apply(len)

同じように、country列のすべての名前に対してupper()メソッドを呼び出すこともできます。ただし、upper()メソッドなので、少し違うアプローチが必要です。

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

Python中級

コースを見る

演習の手順

  • forループを、.apply(str.upper)を使った1行のコードに置き換えましょう。この呼び出しによって同じ結果が得られるはずです。国名を大文字に変換したものを含むCOUNTRY列が、carsに追加されます。
  • いつものように、carsを出力して努力の成果を確認しましょう。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import cars data
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)

# Use .apply(str.upper)
for lab, row in cars.iterrows() :
    cars.loc[lab, "COUNTRY"] = row["country"].upper()
コードを編集して実行