Pandas 对具有columns.name的dataframe列重新排序
我想对从Pandas 对具有columns.name的dataframe列重新排序,pandas,Pandas,我想对从交叉表生成的数据帧的列重新排序。但是,我使用的方法不起作用,因为它有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 然后我用交叉表来计数 cb=pd.交叉表(df['levels',df['c
交叉表生成的数据帧的列重新排序。但是,我使用的方法不起作用,因为它有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
然后我用交叉表来计数
cb=pd.交叉表(df['levels',df['converted'])
cb
我想交换两列的顺序。我尝试了cb[[True,False]]
并得到了错误ValueError:Item错误的长度2而不是3。
我猜这是因为它有列。name
,它是转换的您可以尝试如下数据帧重新索引方法:
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)
当列类型为bool时,尝试使用sort\u index
,这将使正常的索引切片无法工作
cb.sort_index(axis=1,ascending=False)
Out[190]:
converted True False
levels
High 2 0
Low 1 2
Mid 1 1
对于这种特殊情况,您可以使用cb[False]=cb.pop(False)
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)
cb.sort_index(axis=1,ascending=False)
Out[190]:
converted True False
levels
High 2 0
Low 1 2
Mid 1 1