開始使用免費開始

新增欄位(2)

使用 iterrows() 逐筆走訪 pandas DataFrame 的每筆觀測值,雖然好理解,但效率不高。因為每次迭代都會建立一個新的 pandas Series。

如果你想要透過對另一個欄位呼叫函式來為 DataFrame 新增欄位,搭配 for 迴圈的 iterrows() 並不是首選。你應該改用 apply()

比較 iterrows()apply()brics DataFrame 中產生相同結果的寫法:

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)。這段呼叫應該得到相同的結果:在 cars 中新增一個 COUNTRY 欄位,內容為國家名稱的大寫版本。
  • 照慣例,列印 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()
編輯並執行程式碼