df_stack = pd.DataFrame({'Country':['USA','USA','MEX','IND','UK','UK','UK'],
'Region':['Americas',np.nan,np.nan,'Asia','Europe',np.nan,np.nan],
'Flower':['Rose','Rose','Lily','Orchid','Dandelion','Dandelion','Dandelion'],
'Animal':['Bison',np.nan,'Golden Eagle','Tiger','Lion','Lion',np.nan],
'Game':['Baseball','Baseball','soccer','hockey','cricket','cricket','cricket']})
print("-------Normal Dataframe------")
print(df_stack)
#created cross tab for getting animal regionwise
crosstab = pd.crosstab(df_stack.Region,df_stack.Animal)
print("-------Before Sorting Crosstab------")
print(crosstab)
#Apply sorting to specific column in this case 'Lion'
crosstab = crosstab.sort_values(['Lion'], ascending=False)
print("-------After Sorting Crosstab by Lion Column------")
print(crosstab)
-------Normal Dataframe------
Country Region Flower Animal Game
0 USA Americas Rose Bison Baseball
1 USA Americas Rose Bison Baseball
2 MEX Americas Lily Golden Eagle soccer
3 IND Asia Orchid Tiger hockey
4 UK Europe Dandelion Lion cricket
5 UK Europe Dandelion Lion cricket
6 UK Europe Dandelion Lion cricket
-------Before Sorting Crosstab------
Animal Bison Golden Eagle Lion Tiger
Region
Americas 2 1 0 0
Asia 0 0 0 1
Europe 0 0 3 0
-------After Sorting Crosstab by Lion Column------
Animal Bison Golden Eagle Lion Tiger
Region
Europe 0 0 3 0
Americas 2 1 0 0
Asia 0 0 0 1
2条答案
按热度按时间wnavrhmk1#
如果你提供了一个数据的例子,那么给予你一个解决方案会更容易,因为它可以相应地变化很多。我将尝试在下面建立一个案例场景和可能的解决方案。
如果我们以数据和交叉表为例:
我们有以下输出:
这是一个常规的 Dataframe 对象,它只是“交叉表”或更好的“透视表”相应。
您要显示:
1.按边缘值(例如,显示更靠近顶部的df ['col 1']的较高计数值)
所以让我们从“1”开始:
有不同的方法可以做到这一点,一个简单的解决方案是显示相同的数据框对象与布尔值的奇异情况;
但是,在大型 Dataframe 的情况下,这种格式可能不是您想要的。
你可以直接打印出肯定的情况,或者列出/追加它们,一个简单的例子是:
输出:
第二个项目/愿望比较复杂,您希望按较高的值排序,但可能会有分歧,与一组索引关联的一列中的较高值很可能与第二列(也与相同的索引关联)的顺序不同。
因此,您可以选择按一个特定列进行排序:
或者,您可以定义一个要排序的指标(行平均值)并相应地进行排序。
希望能有所帮助!
qyyhg6bp2#