在Python中将列移动到数据帧的前面

在Python中将列移动到数据帧的前面,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我环顾四周,但找不到确切的解决方案,尽管这应该很容易完成: 我有一个数据框,我只想把其中一列移到前面。我如何做到这一点而不必将列传递给列表,或者目前没有办法解决这个问题 输入: 1 2 3 4 C C C C C G N D A K M I L C C L C G N D A yfvh G N D A G Y D A 预期产出: 4 1 2 3 C C C C C A G N D L K M I C C C L A G N D H Y F V A G N D G Y D 一种方

我环顾四周,但找不到确切的解决方案,尽管这应该很容易完成:

我有一个数据框,我只想把其中一列移到前面。我如何做到这一点而不必将列传递给列表,或者目前没有办法解决这个问题


输入:
1  2  3  4 
C C C C C
G N D A
K M I L
C C L C
G N D A
yfvh
G N D A
G Y D A
预期产出:
4  1  2  3 
C C C C C
A G N D
L K M I
C C C L
A G N D
H Y F V
A G N D
G Y D

一种方法是对列索引进行切片并使用以获得所需的输出:

df[df.columns[-1:].union(df.columns[:-1], sort=False)]

   4  1  2  3
0  C  C  C  C
1  A  G  N  D
2  L  K  M  I
3  C  C  C  L
4  A  G  N  D
5  H  Y  F  V
6  A  G  N  D
7  A  G  Y  D

根据您的评论,为了移动到某一列的前面,您可以执行以下操作:

df[sorted(df.columns, key=lambda x: x!='4')]

   4  1  2  3
0  C  C  C  C
1  A  G  N  D
2  L  K  M  I
3  C  C  C  L
4  A  G  N  D
5  H  Y  F  V
6  A  G  N  D
7  A  G  Y  D

唯一的问题是,它假定最后一列是我希望移动到前面的列,因为它需要将列传递给列表,然后在重构数据帧之前反转列表。有没有一种非面向列表的方法可以做到这一点,而不假设最后一列总是移动到前面的那一列?