好吧,如果您提供数据示例,则更容易为您提供解决方案,因为它可能会相应地变化很大。我将尝试在下面构建一个案例场景和可能的解决方案。
如果我们采用示例数据和交叉表:
a = np.array(['foo', 'foo', 'foo', 'foo', 'bar', 'bar',
'bar', 'bar', 'foo', 'foo', 'foo'], dtype=object)
c = np.array(['dull', 'dull', 'shiny', 'dull', 'dull', 'weird',
'shiny', 'dull', 'shiny', 'shiny', 'shiny'], dtype=object)
CT = pd.crosstab(a, c, rownames=['a'], colnames=['c'])
CT
我们有以下输出:
这是一个常规的数据框对象,它只是“交叉表”或更好的“数据透视”。
你想展示:
- df['col1'] 或 df['col2'] 的唯一值(交叉表结果的列/行)
- 按边际值(例如,显示更靠近顶部的 df['col1'] 的更高计数值)
让我们从“1”开始:
有不同的方法可以做到这一点,一个简单的解决方案是为奇异情况显示具有布尔值的相同数据框对象;
[CT == 1]
但是,在大型数据帧的情况下,这种格式可能不是您想要的。
您可以只打印正面案例,或列出/附加它们,一个简单的例子是:
for col in CT.columns:
for index in CT.index:
if CT.loc[index,col] == 1:
print (index,col,'singular')
输出:
('bar', 'shiny', 'singular')
('bar', 'weird', 'singular')
第二个项目/欲望更复杂。
您想按更高的价值订购。但可能存在分歧。与一组索引相关联的一列中的较高值很可能在顺序上与第二列不同(也与同一索引相关联)。
因此,您可以选择按特定列排序:
CT.sort_values('column_name', ascending=False)
或者,您可以定义一个您想要排序的指标(行平均值)并进行相应的排序。
希望有帮助!