亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

幕布斯7119047 2023-10-18 21:07:35
我已經解決了與使用數據透視表對列進行排序相關的所有問題,但找不到我需要的東西。我有一個這樣的數據框:        Date  Moisture     Accum  Year  DayOfYear0 2000-01-01  0.408640  0.408640  2000          11 2000-01-02  0.433425  0.842065  2000          22 2000-01-03  0.429745  1.271810  2000          33 2000-01-04  0.427589  1.699399  2000          44 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      MeanDayOfYear                                ...                              1          0.408640  0.433016  0.420326  ...  0.423164  0.328385  0.4018962          0.433425  0.423607  0.414502  ...  0.419587  0.322804  0.3984343          0.429745  0.418132  0.404171  ...  0.417384  0.318795  0.3969134          0.427589  0.407190  0.394478  ...  0.420361  0.316989  0.3984255          0.428700  0.401072  0.386432  ...  0.417026  0.313664  0.396777我想對每年的值進行排序,但我無法實現。我試過這個:mean1 = mean1.sort_values('2000', ascending = True, axis = 0)但我明白了KeyError: '2000'。我還嘗試按我從(“水分”)制作數據透視表的值進行排序,作為對建議的其他問題的回答,但它一直顯示類似的錯誤。如果我嘗試對“平均值”列中的值進行排序,我確實會得到排序后的列,但對于年份列(例如“2000”),它(顯然)無法完成。我缺少什么?
查看完整描述

2 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

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

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

我認為另外兩個更正是可取的,但不是必需的:ascendingaxis參數的默認值分別為True0,因此如果您想讓代碼更短,可以省略它們。

因此,將有問題的行替換為:

mean1 = mean1.sort_values(2000)


查看完整回答
反對 回復 2023-10-18
?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

如果你想對每一列進行獨立排序,它與以下內容相同:


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

但現在索引根本沒有意義,因為所有單元格都已重新排序。所以也許您需要重新索引它。


查看完整回答
反對 回復 2023-10-18
  • 2 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號