Tôi đang sử dụng Pandas 0,19.Bảng tổng hợp Pandas: thứ tự cột và tổng phụ
Xét khung dữ liệu sau:
FID admin0 admin1 admin2 windspeed population
0 cntry1 state1 city1 60km/h 700
1 cntry1 state1 city1 90km/h 210
2 cntry1 state1 city2 60km/h 100
3 cntry1 state2 city3 60km/h 70
4 cntry1 state2 city4 60km/h 180
5 cntry1 state2 city4 90km/h 370
6 cntry2 state3 city5 60km/h 890
7 cntry2 state3 city6 60km/h 120
8 cntry2 state3 city6 90km/h 420
9 cntry2 state3 city6 120km/h 360
10 cntry2 state4 city7 60km/h 740
Làm thế nào tôi có thể tạo ra một bảng như thế này?
population
60km/h 90km/h 120km/h
admin0 admin1 admin2
cntry1 state1 city1 700 210 0
cntry1 state1 city2 100 0 0
cntry1 state2 city3 70 0 0
cntry1 state2 city4 180 370 0
cntry2 state3 city5 890 0 0
cntry2 state3 city6 120 420 360
cntry2 state4 city7 740 0 0
Tôi đã thử với pivot table sau:
table = pd.pivot_table(df,index=["admin0","admin1","admin2"], columns=["windspeed"], values=["population"],fill_value=0)
Nói chung nó hoạt động tuyệt vời, nhưng tiếc là tôi không thể sắp xếp các cột mới theo thứ tự đúng: 120km/h cột xuất hiện trước những người cho 60km/h và 90km/h. Làm cách nào tôi có thể chỉ định thứ tự của các cột mới?
Hơn nữa, bước thứ hai tôi cần thêm tổng phụ cả cho admin0 và admin1. Lý tưởng nhất, bảng tôi cần nên như thế này:
population
60km/h 90km/h 120km/h
admin0 admin1 admin2
cntry1 state1 city1 700 210 0
cntry1 state1 city2 100 0 0
SUM state1 800 210 0
cntry1 state2 city3 70 0 0
cntry1 state2 city4 180 370 0
SUM state2 250 370 0
SUM cntry1 1050 580 0
cntry2 state3 city5 890 0 0
cntry2 state3 city6 120 420 360
SUM state3 1010 420 360
cntry2 state4 city7 740 0 0
SUM state4 740 0 0
SUM cntry2 1750 420 360
SUM ALL 2800 1000 360
Làm việc với MultiIndex không phải là dễ dàng, thật không may. Không phải là vấn đề nếu tôi thay đổi tên chỉ mục - '_sum' đã được thêm vào cuối, bởi vì phân loại chỉ mục? – jezrael
Tuyệt vời, cảm ơn. Tôi đã nhận thấy rằng tập lệnh này cũng tạo ra các hàng tổng hợp khi chỉ có một bản ghi cho một admin1 cụ thể (state4_sum, cho ví dụ đã cho). Bằng cách này, nó thêm nhầm lẫn vào bảng, vì trong trường hợp của tôi có rất nhiều admin1 như thế này. Có cách nào để thêm hàng tổng chỉ khi có thực sự một cái gì đó để tổng hợp? – Andreampa
Có, điều đó là có thể. Nhưng một câu hỏi - là trong dataframe một số giá trị NaN? – jezrael