簡體   English   中英

使用 Pandas 對數據透視表中的列進行排序

[英]Sort columns in Pivot table with Pandas

伙計們。 我已經解決了與使用數據透視表對列進行排序相關的所有問題,但找不到我需要的東西。 我有一個這樣的數據框:

        Date  Moisture     Accum  Year  DayOfYear
0 2000-01-01  0.408640  0.408640  2000          1
1 2000-01-02  0.433425  0.842065  2000          2
2 2000-01-03  0.429745  1.271810  2000          3
3 2000-01-04  0.427589  1.699399  2000          4
4 2000-01-05  0.428700  2.128098  2000          5

我從中創建了一個數據透視表,並根據現有數據計算了另一列:

mean1 = pd.pivot_table(c1, index = 'DayOfYear', columns = 'Year', values = 'Moisture')
mean1['Mean'] = mean1.mean(axis = 1)

我得到了這樣的東西:

Year           2000      2001      2002  ...      2018      2019      Mean
DayOfYear                                ...                              
1          0.408640  0.433016  0.420326  ...  0.423164  0.328385  0.401896
2          0.433425  0.423607  0.414502  ...  0.419587  0.322804  0.398434
3          0.429745  0.418132  0.404171  ...  0.417384  0.318795  0.396913
4          0.427589  0.407190  0.394478  ...  0.420361  0.316989  0.398425
5          0.428700  0.401072  0.386432  ...  0.417026  0.313664  0.396777

我想對每年的值進行排序,但我一直無法實現。 我試過這個:

mean1 = mean1.sort_values('2000', ascending = True, axis = 0)

但我得到KeyError: '2000' 我還嘗試按我從 ('Moisture') 制作數據透視表的值進行排序,作為對其他問題的建議的回答,但它一直顯示類似的錯誤。 如果我嘗試對“均值”列中的值進行排序,我確實會得到已排序的列,但對於年份列(例如“2000”),它(顯然)無法完成。 我錯過了什么?

源 DataFrame 中的Year列很可能是int類型,因此數據透視表中的相應列也具有“整數”(而不是“字符串”)名稱(運行mean1.info()以檢查列類型)。

因此,第一個強制更正是將第一個參數更改為整數2000

在我看來,另外兩個更正是可取的,但不是必需的:升序參數的默認值分別是True0 ,所以如果你想保持你的代碼更短,你可以省略它們。

因此,將違規行替換為:

mean1 = mean1.sort_values(2000)

如果你想對每一列獨立排序,你可以試試這個解決方案,它與:

import numpy as np

mean2 = pd.DataFrame(np.sort(mean1.values, axis=0), index=mean1.index, columns=mean1.columns)

這將為您提供一個 DataFrame,其中每一列都單獨排序。

Year           2000      2001      2002      2018      2019      Mean
DayOfYear                                                            
1          0.408640  0.401072  0.386432  0.417026  0.313664  0.389379
2          0.427589  0.407190  0.394478  0.417384  0.316989  0.393321
3          0.428700  0.418132  0.404171  0.419587  0.318795  0.397645
4          0.429745  0.423607  0.414502  0.420361  0.322804  0.402706
5          0.433425  0.433016  0.420326  0.423164  0.328385  0.402785

但是現在索引根本沒有意義,因為所有單元格都被重新排序。 所以也許你想重新索引它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM