2016-01-12 28 views
16

Tôi đã có một 'DataFrame` trong đó có giá trị bị thiếu thường xuyên, và trông giống như sau:trung bình Row-khôn ngoan cho một tập hợp con của các cột trong khi chiếm giá trị thiếu

  Monday   Tuesday   Wednesday 
     ================================================ 
Mike  42    NaN    12 
Jenna  NaN   NaN    15 
Jon   21    4     1 

Tôi muốn thêm column mới vào khung dữ liệu của tôi, nơi tôi muốn tính trung bình trên tất cả columns cho mỗi row.

Ý nghĩa, cho Mike, tôi cần (df['Monday'] + df['Wednesday'])/2, nhưng đối với Jenna, tôi chỉ đơn giản là muốn sử dụng df['Wednesday amt.']/1

Có ai biết cách tốt nhất để giải thích cho sự thay đổi này là kết quả của các giá trị bị mất tích và tính toán trung bình ?

Trả lời

30

Bạn có thể chỉ đơn giản là:

df['avg'] = df.mean(axis=1) 

     Monday Tuesday Wednesday  avg 
Mike  42  NaN   12 27.000000 
Jenna  NaN  NaN   15 15.000000 
Jon  21  4   1 8.666667 

.mean() bỏ qua các giá trị bị mất theo mặc định: see docs.

Để chọn một tập hợp con, bạn có thể:

df['avg'] = df[['Monday', 'Tuesday']].mean(axis=1) 

     Monday Tuesday Wednesday avg 
Mike  42  NaN   12 42.0 
Jenna  NaN  NaN   15 NaN 
Jon  21  4   1 12.5 
+0

Đó là tuyệt vời, cảm ơn! Có cách nào tôi có thể loại trừ một lựa chọn các cột mà không tạo ra một khung dữ liệu mới hoàn toàn, hoặc tôi sẽ phải tạo một df mới ra khỏi một tập hợp con của df, chạy 'df.mean (axis = 1)', và sau đó hợp nhất với khung dữ liệu gốc? – scrollex

+1

Bạn được chào đón, hãy xem câu trả lời cập nhật. – Stefan

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