我想重新排序从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)