2016-08-09 7 views
0

私は、インデックスで置き換えたい値のない系列のデータセットを持っています。 2番目の列には、最初の列と同じ番号が含まれていますが、順序は異なります。パンダの複数列のランク付け

ここでは例です:これはと判明する必要があります

>>> df 
ind u v d 
0  5 7 151 
1  7 20 151 
2  8 40 151 
3  20 5 151 

>>>df 
ind u v d 
0  1 2 151 
1  2 4 151 
2  3 5 151 
3  4 1 151 

私は、新しい列を作成することで、行に 'U' の値を再インデックス:

>>>df['new_index'] = range(1, len(numbers) + 1) 

インデックスを参照する第2列の値をどのように置き換えるのですか?

アドバイスありがとうございます!

+0

「第2列には第1列と同じ番号が含まれていますが、順序は異なります。あなたの例ではそうではないようです。 –

+0

@ Ami:それは同じ数字を含み、多かれ少なかれ数を含んでいるかもしれません。数字は、欄で複数回表示されることもあります。 – Ernie

+0

"それは同じ数字を含み、より多くの/少ない数字を含むかもしれません"そのようなレンダリングは "最初の列と同じ数字を含んでいます"無意味です。 –

答えて

1

あなたはSeries.rankを使用しますが、最初のunstackSeriesを作成し、最後に再びunstackDataFrameを作成する必要がありますすることができます

df[['u','v']] = df[['u','v']].unstack().rank(method='dense').astype(int).unstack(0) 
print (df) 
    u v d 
ind   
0 1 2 151 
1 2 4 151 
2 3 5 151 
3 4 1 151 

使用した場合のみDataFrame.rankvで出力が異なる:

df[['u','v']] = df[['u','v']].rank(method='dense').astype(int) 
print (df) 
    u v d 
ind   
0 1 2 151 
1 2 3 151 
2 3 4 151 
3 4 1 151 
+0

niceありがとう!それは私が探していたものをexacly! – Ernie

関連する問題