2015-07-22 36 views
15

Ai có thể giải thích tại sao loc được sử dụng trong gấu trúc python với các ví dụ như hình dưới đây?chức năng loc trong gấu trúc

for i in range(0, 2): 
    for j in range(0, 3): 
    df.loc[(df.Age.isnull()) & (df.Gender == i) & (df.Pclass == j+1), 
      'AgeFill'] = median_ages[i,j] 
+1

Trong ví dụ của bạn, '.loc' được sử dụng chủ yếu bởi vì bạn cố gắng truy cập một ô thông qua chỉ mục cột' AgeFill'. –

Trả lời

19

Việc sử dụng .loc được khuyến khích ở đây vì các phương pháp df.Age.isnull(), df.Gender == idf.Pclass == j+1 có thể trở lại một cái nhìn của lát của khung dữ liệu hoặc có thể trả về một bản sao. Điều này có thể gây nhầm lẫn cho gấu trúc.

Nếu bạn không sử dụng .loc, bạn sẽ gọi tất cả 3 điều kiện trong chuỗi dẫn đến sự cố được gọi là lập chỉ mục chuỗi. Khi bạn sử dụng .loc, tuy nhiên bạn truy cập tất cả các điều kiện của mình trong một bước và gấu trúc không còn bị nhầm lẫn nữa.

Bạn có thể đọc thêm về điều này cùng với một số ví dụ về thời điểm không sử dụng .loc sẽ khiến hoạt động không thành công trong số pandas documentation.

Câu trả lời đơn giản là trong khi bạn thường có thể nhận được ngay với không sử dụng .loc và chỉ cần gõ (ví dụ)

df['Age_fill'][(df.Age.isnull()) & (df.Gender == i) & (df.Pclass == j+1)] \ 
                  = median_ages[i,j] 

bạn sẽ luôn nhận được cảnh báo SettingWithCopy và mã của bạn sẽ là một Messier chút cho nó.

Trong kinh nghiệm của tôi .loc đã đưa tôi một thời gian để có được đầu của tôi xung quanh và nó đã được một chút khó chịu cập nhật mã của tôi. Nhưng nó thực sự siêu đơn giản và rất trực quan: df.loc[row_index,col_indexer].

Để biết thêm thông tin, hãy xem tài liệu về gấu trúc theo số Indexing and Selecting Data.

Các vấn đề liên quan