Bắt đầu ngayBắt đầu miễn phí

Thêm cột (2)

Dùng iterrows() để lặp qua từng quan sát của một Pandas DataFrame thì dễ hiểu, nhưng không hiệu quả. Ở mỗi vòng lặp, bạn đang tạo ra một Pandas Series mới.

Nếu bạn muốn thêm một cột vào DataFrame bằng cách gọi một hàm trên một cột khác, thì kết hợp iterrows() với vòng lặp for không phải là cách tối ưu. Thay vào đó, bạn nên dùng apply().

So sánh phiên bản dùng iterrows() với phiên bản dùng apply() để thu được cùng kết quả trong DataFrame brics:

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

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

Ta có thể làm điều tương tự để gọi phương thức upper() trên mọi tên trong cột country. Tuy nhiên, upper() là một method, vì vậy chúng ta sẽ cần một cách tiếp cận hơi khác:

Bài tập này là một phần của khóa học

Python nâng cao

Xem khóa học

Hướng dẫn bài tập

  • Thay vòng lặp for bằng một dòng dùng .apply(str.upper). Lệnh gọi này phải cho cùng kết quả: một cột COUNTRY được thêm vào cars, chứa phiên bản viết hoa của tên quốc gia.
  • Như thường lệ, in cars ra để xem thành quả công sức của bạn

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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()
Chỉnh sửa và Chạy Mã