2016-01-01 125 views
1

我有與我生成使用兩個其他數據幀的合併N(可變的)列的熊貓數據幀(結果)DF:重新排列在大熊貓數據幀一列的非連續順序

result1 = df1.merge(df2, on='ID', how='left') 

RESULT1數據幀預計會有一列變量(這是更大腳本的一部分)。我想以最後2列連續第二和第三列的方式排列列,然後所有剩下的列將隨後(第一列保留爲第一列)。如果RESULT1是已知有6列,然後我可以使用:

result2=result1.iloc[:,[0,4,5,1,2,3]] #this works fine. 

,但我需要的1,2,3是在一個範圍內的格式是不實際進入全數字爲每個df。所以,我想使用:

result2=result1.iloc[:,[0,len(result1.columns), len(result1.columns)-1, 1:len(result1.columns-2]] 
#Assuming 6 columns : 0,   5  , 4      , 1, 2, 3 

這將是想法的方式,但這是創建語法錯誤。任何建議來解決這個問題?

回答

2

而不是使用切片語法,我只希望建立一個列表,並使用:

>>> df 
    0 1 2 3 4 5 
0 0 1 2 3 4 5 
1 0 1 2 3 4 5 
2 0 1 2 3 4 5 
3 0 1 2 3 4 5 
4 0 1 2 3 4 5 
>>> ncol = len(df.columns) 
>>> df.iloc[:,[0, ncol-1, ncol-2] + list(range(1,ncol-2))] 
    0 5 4 1 2 3 
0 0 5 4 1 2 3 
1 0 5 4 1 2 3 
2 0 5 4 1 2 3 
3 0 5 4 1 2 3 
4 0 5 4 1 2 3 
+0

它的工作原理。謝謝。非常感激。 – BioProgram