2017-04-21 102 views
0

假設你有以下的數據框(這是更復雜)如何按索引對數據框的列進行排序?大熊貓

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

我想排名基於索引的矩陣。我認爲,解決方案發布不適合我的問題

我不得不寫一個公式來回答這個問題

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) 

不過,我有困難,因爲它的條目之前打印灣

例如,對於

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) 
4

df4作爲索引器的df4指數:

pd.DataFrame(df4.index[df4-1]) 

注意,因爲大熊貓的索引,我減去1從df4是從零開始的,但你的數據幀似乎是1基於。

所得輸出:

0 1 
0 a e 
1 c b 
2 d c 
3 e d 
4 b a 
相關問題