2016-08-09 123 views
0

我有一個缺少值的系列數據集,我想用索引來替換。第二列包含與第一列相同的編號,但順序不同。在熊貓中排列多個列

這裏有一個例子:

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

這應該變成:

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

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

我通過創建一個新的列進行索引行 'U' 值但我現在如何替換引用索引的第二列的值?

感謝您的任何建議!

+0

「的第二列包含的數字與第一列相同,但順序不同。「在你的例子中似乎不是這樣。 –

+0

@ Ami:真的,它包含相同的數字,也可能包含一些更多/更少的數字。數字也可能在一個柱子中出現多次。 – Ernie

+0

「它包含相同的數字,也可能包含一些更多/更少的數字」這種呈現「包含與第一列相同的數字」毫無意義。 –

回答

1

您可以使用Series.rank,但首先需要創建Seriesunstack和持續重新創建DataFrameunstack

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.rank,在v輸出不同的是:

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

不錯謝謝!這無疑是我一直在尋找的! – Ernie