假设您有以下Dataframe(它更复杂)
df4=pd.DataFrame(np.matrix([[1,5],[3,2],[4,3],[5,4],[2,1]]),index=['a','b','c','d','e'])
哪个已经排名,但是,我想按行索引对其进行排名,以达到所需的数据框
df5=pd.DataFrame(np.matrix([['a','e'],['e','b'],['b','c'],['c','d'],['d','a']]))
这样做有简单的方法吗?
非常感谢
答案 0 :(得分:4)
将df4
作为索引器传递给df4
:
pd.DataFrame(df4.index[df4-1])
请注意,我从df4
中减去1,因为Pandas索引是基于零的,但您的DataFrame似乎是1。
结果输出:
0 1
0 a e
1 c b
2 d c
3 e d
4 b a
答案 1 :(得分:0)
我想根据索引对矩阵进行排名。我认为发布的解决方案不适合我的问题
我必须写一个公式来回答这个问题
def Column_rank_based_list(f):
r,c=f.shape
B= array(range(r*c), dtype='a5').reshape(r,c)
for j in range(c):
for i in range(r):
B[f.ix[i,j]-1,j]=f.index[i]
return pd.DataFrame(B, columns=f.columns)
但是,我遇到了困难,因为它是在条目之前打印b。
例如
df4=pd.DataFrame(np.matrix([[1,5],[3,2],[4,3],[5,4],[2,1]]),index=['a','b','c','d','e'])
你会得到
Column_rank_based_list(df4)