Pandas:排序数据透视表

Posted

技术标签:

【中文标题】Pandas:排序数据透视表【英文标题】:Pandas: Sort pivot table 【发布时间】:2012-05-22 15:29:36 【问题描述】:

第一次尝试 pandas,我尝试先按索引对数据透视表进行排序,然后按系列中的值排序。

到目前为止我已经尝试过:

table = pivot_table(sheet1, values='Value', rows=['A','B'], aggfunc=np.sum)

# Sorts by value ascending, can't change to descending
table.copy().sort()
table

# The following gives me the correct ordering in values, but ignores index 
sorted_table = table.order(ascending=False)
sorted_table

# The following brings me back to the original ordering
sorted_table = table.order(ascending=False)
sorted_table2 = sorted_table.sortlevel(0)
sorted_table2

按索引然后值对数据透视表进行排序的正确方法是什么?

【问题讨论】:

你能举例说明你期望的结果是什么样的吗?听起来您想按“A”级排序,然后按值在组内排序,对吗? 【参考方案1】:

这是一个可以做你想做的解决方案:

key1 = table.index.labels[0]
key2 = table.rank(ascending=False)

# sort by key1, then key2
sorter = np.lexsort((key2, key1))

sorted_table = table.take(sorter)

结果如下所示:

In [22]: table
Out[22]: 
A    B    
bar  one      0.698202
     three    0.801326
     two     -0.205257
foo  one     -0.963747
     three    0.120621
     two      0.189623
Name: C

In [23]: table.take(sorter)
Out[23]: 
A    B    
bar  three    0.801326
     one      0.698202
     two     -0.205257
foo  two      0.189623
     three    0.120621
     one     -0.963747
Name: C

这将作为 API 方法构建到 pandas 中很好。不知道它应该是什么样子。

【讨论】:

以上是关于Pandas:排序数据透视表的主要内容,如果未能解决你的问题,请参考以下文章

对多索引数据透视表 pandas 进行排序

快速入门pandas进行数据挖掘数据分析[多维度排序数据筛选分组计算透视表]

快速入门pandas进行数据挖掘数据分析[多维度排序数据筛选分组计算透视表]

具有多索引的 Pandas 子数据透视表和总数据透视表

在 Pandas 中处理大型数据透视表

Pandas 数据透视表百分比计算