2013-07-17 51 views
11

Tôi có một khung dữ liệu trong Pandas, tôi muốn sắp xếp các cột của nó (tức là lấy một khung dữ liệu mới hoặc một khung nhìn) theo giá trị trung bình của các cột của nó (hoặc ví dụ: giá trị). Tài liệu thảo luận về sorting by label or value, nhưng tôi không thể tìm thấy bất kỳ điều gì về các phương pháp sắp xếp tùy chỉnh.Pandas: Sắp xếp các cột theo giá trị trung bình của chúng

Tôi làm cách nào để thực hiện việc này?

Trả lời

22

Bạn có thể sử dụng mean phương pháp DataFrame và phương pháp dòng sort_values:

In [11]: df = pd.DataFrame(np.random.randn(4,4), columns=list('ABCD')) 

In [12]: df 
Out[12]: 
      A   B   C   D 
0 0.933069 1.432486 0.288637 -1.867853 
1 -0.455952 -0.725268 0.339908 1.318175 
2 -0.894331 0.573868 1.116137 0.508845 
3 0.661572 0.819360 -0.527327 -0.925478 

In [13]: df.mean() 
Out[13]: 
A 0.061089 
B 0.525112 
C 0.304339 
D -0.241578 
dtype: float64 

In [14]: df.mean().sort_values() 
Out[14]: 
D -0.241578 
A 0.061089 
C 0.304339 
B 0.525112 
dtype: float64 

Sau đó, bạn có thể sắp xếp lại các cột bằng reindex_axis:

In [15]: df.reindex_axis(df.mean().sort_values().index, axis=1) 
Out[15]: 
      D   A   C   B 
0 -1.867853 0.933069 0.288637 1.432486 
1 1.318175 -0.455952 0.339908 -0.725268 
2 0.508845 -0.894331 1.116137 0.573868 
3 -0.925478 0.661572 -0.527327 0.819360 

Lưu ý: Trong các phiên bản trước đó của gấu trúc, sort_values từng là order, nhưng order là d eprecated như là một phần của 0,17 để phù hợp hơn với các phương pháp phân loại khác.

+7

thêm vào sách dạy nấu ăn? – Jeff

+3

Có vẻ như 'thứ tự' hiện không được chấp nhận, và' sort_values' (được thêm vào trong phiên bản 0.17.0) nên được sử dụng thay thế. – bli

+0

@bli cảm ơn bạn! Tôi thực sự cần phải viết một kịch bản để cập nhật tất cả các câu trả lời gấu trúc của tôi (tôi nghi ngờ có một vài trăm có thể làm với một bản cập nhật) .... –

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