首页 > 解决方案 > 重新排序具有 columns.name 的 pandas 数据框列

问题描述

我想重新排序从生成的数据框的列crosstab。但是,我使用的方法不起作用,因为它有 columns.name

示例数据

d = {'levels':['High', 'High', 'Mid', 'Low', 'Low', 'Low', 'Mid'], 'converted':[True, True, True, False, False, True, False]}
df = pd.DataFrame(data=d)

df

    levels  converted
0   High    True
1   High    True
2   Mid     True
3   Low     False
4   Low     False
5   Low     True
6   Mid     False

比我crosstab以前数它 cb = pd.crosstab(df['levels'], df['converted'])

CB

converted   False   True
levels      
High        0       2
Low         2       1
Mid         1       1

我想交换两列的顺序。我试过了, 我猜是因为它有cb[[True, False]]错误,这是ValueError: Item wrong length 2 instead of 3.columns.nameconverted

标签: pandas

解决方案


尝试使用sort_index, 当列类型为 bool 时,这会使正常的索引切片不起作用

cb.sort_index(axis=1,ascending=False)
Out[190]: 
converted  True   False
levels                 
High           2      0
Low            1      2
Mid            1      1

推荐阅读