例如,
df = pd.DataFrame({'x':[1,1,1,2,3,3], 'y':['a','a','c','b','b','b']})
ct = pd.crosstab(df.x, df.y)
ct
y a b c
x
1 2 0 1
2 0 1 0
3 0 2 0
如何根据row1,row2和row3中的值(按优先级顺序)对ct列进行排序?
我已尝试过以下操作,但两者均无效
ct.sort_values([1, 2, 3], axis=1)
ct.sort_values(['1','2','3'], axis=1)
答案 0 :(得分:2)
目前无法通过直接调用sort_values
来完成此操作。关于它有an open bug report。
你仍然可以通过转置,按列排序,然后再转置来做得不太好:
>>> ct.T.sort_values([1, 2, 3]).T
y b c a
x
1 0 1 2
2 1 0 0
3 2 0 0
答案 1 :(得分:0)
这应按照> b> c:
的顺序对它们进行排序df = pd.DataFrame({'x':[1,1,1,2,3,3], 'y':['a','a','c','b','b','b']})
ct = pd.crosstab(df.x, df.y)
y a b c
x
1 2 0 1
2 0 1 0
3 0 2 0
sorted_df = pd.DataFrame(ct.sort_values(by = ['a','b','c'], ascending = [False,False,False]))
y a b c
x
1 2 0 1
3 0 2 0
2 0 1 0