簡體   English   中英

Pandas pivot_table,按列對值進行排序

[英]Pandas pivot_table, sort values by columns

我是 Pandas 的新用戶,我喜歡它!

我正在嘗試在 Pandas 中創建一個數據透視表。 按照我想要的方式創建數據透視表后,我想按列對值進行排名。

我附上了一張來自 Excel 的圖片,因為它更容易以表格格式查看我想要實現的目標。 圖片鏈接

我已經通過 stackoverflow 進行了搜索,但找不到答案。 我嘗試使用 .sort() 但這不起作用。 任何幫助將不勝感激。

提前致謝

這應該做你正在尋找的:

In [1]: df = pd.DataFrame.from_dict([{'Country': 'A', 'Year':2012, 'Value': 20, 'Volume': 1}, {'Country': 'B', 'Year':2012, 'Value': 100, 'Volume': 2}, {'Country': 'C', 'Year':2013, 'Value': 40, 'Volume': 4}])

In [2]: df_pivot = pd.pivot_table(df, index=['Country'], columns = ['Year'],values=['Value'], fill_value=0)

In [3]: df_pivot
Out [4]:
    Value     
Year     2012 2013
Country           
A          20    0
B         100    0
C           0   40

In [5]: df = df_pivot.reindex(df_pivot['Value'].sort_values(by=2012, ascending=False).index)

Out [6]: 
    Value     
Year     2012 2013
Country           
B         100    0
A          20    0
C           0   40

基本上它獲取排序值的索引並重新索引初始數據透視表。

您可以對數據透視表中的多列進行排序。 就我而言,我將郵政編碼發生事故的概率和地址發生事故的概率進行降序排序並將結果顯示在熱圖中。

pivot = df.pivot_table(index=['postcode'],values=['probability_at_address','probability_at_postcode'],aggfunc='mean').sort_values(by=['probability_at_address','probability_at_postcode'],ascending=False)
fig,ax=plt.subplots(figsize=(10,20))
sns.heatmap(pivot,cmap="Blues",ax=ax)
plt.show()

暫無
暫無

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

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