重新排序具有columns.name的panda数据帧列



我想重新排序从crosstab生成的数据帧的列。然而,我使用的方法不起作用,因为它有列。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.name,也就是converted

尝试使用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

您可以尝试以下数据帧重新索引方法:

import pandas as pd
d = {'levels':['High', 'High', 'Mid', 'Low', 'Low', 'Low', 'Mid'], 'converted':[True, True, True, False, False, True, False]}
df = pd.DataFrame(data=d)
print(df)
cb = pd.crosstab(df['levels'],df['converted'])
print(cb)
column_titles = [True,False]
cb=cb.reindex(columns=column_titles)
print(cb)

最新更新