重新排列pandas数据帧中非连续的列顺序

时间:2016-01-01 19:41:07

标签: python pandas dataframe

我有一个pandas数据框(结果)df,我使用两个其他数据框的合并生成了n(变量)列:

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

result1数据帧应该有一个变量列数(这是一个更大的脚本的一部分)。我希望以最后两列连续第二列和第三列的方式排列列,然后所有其余列将跟随(第一列保留为第一列)。如果已知result1有6列,那么我可以使用:

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

但是,我需要1,2,3为范围格式,因为输入每个df的全部数字是不切实际的。所以,我想使用:

javac -classpath /lib/jarContainingTheClass.jar /examples/HelloWorld.java

这将是一种想法,但这会产生语法错误。有什么建议可以解决这个问题吗?

1 个答案:

答案 0 :(得分: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