繁体   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