【问题标题】:Move Column to Front of DataFrame in Python [duplicate]在Python中将列移动到DataFrame的前面[重复]
【发布时间】:2020-03-16 11:48:42
【问题描述】:

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

我有一个 DataFrame,我只想将其中一列移到前面。如何在不必将列传递给列表的情况下执行此操作,或者目前没有办法解决这个问题?


Input:
1  2  3  4 
 C  C  C  C
 G  N  D  A
 K  M  I  L
 C  C  L  C
 G  N  D  A
 Y  F  V  H
 G  N  D  A
 G  Y  D  A

Expected output:
4  1  2  3 
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
A  G  Y  D

【问题讨论】:

  • 唯一的问题是它假设最后一列是我想要移到前面的那一列,因为它需要将列传递给列表,然后在重建数据帧之前反转列表。有没有一种非列表导向的方式来做到这一点,而不假设最后一列总是移到前面的那一列?

标签: python python-3.x pandas dataframe


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-15
    • 2021-01-27
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2013-04-15
    • 2017-12-04
    • 2021-05-17
    相关资源
    最近更新 更多