当前位置: 首页 > 知识库问答 >
问题:

在Python中将列移动到DataFrame的前面[重复]

耿敏达
2023-03-14

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

我有一个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

共有1个答案

公孙高轩
2023-03-14

一种方法是对列索引进行切片,并使用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
 类似资料:
  • 我有一个csv文件,它有一个值为1或2的列exch。另一列中有许多数字。问题是我想要EXCH2数据紧挨着EXCH1数据。是否有一种方法可以将EXCH2数据从与EXCH1数据相同的列中移除,使其成为自己的新列,并重置索引,使它们并排在一起? 电流输出:

  • 问题内容: 这是我的df: 如何将按名称()的列移动到表的前面,索引为0。结果应如下所示: 我当前的代码使用来按索引移动列,但我想按名称进行移动。 问题答案: 我们可以通过传递列表来重新排序: 另一种方法是引用该列,然后将其重新插入前面: 从以后开始,您还可以使用以获得与以后版本的熊猫不建议使用的相同的结果:

  • 我有一个数据框,有3列,如下所示: 我想添加列,它是中一些列的总和,但不是每行的同一列,例如 只有第1行和第3行是同一列的和,第0行和第2行是其他列的和。 我在Stack over flow上发现的总是整个数据帧的特定列,但在本例中是不同的。 我能做的最好的方法是什么?

  • 对如何实现这一点有什么想法吗?

  • 我正试着在一个熊猫数据目录中加载一个SQLAlchemy。 当我尝试: 我得到一个属性错误: 和 上一个问题SQLAlchemy ORM到pandas DataFrame的转换解决了我的问题,但是解决方案:使用不是我的解决方案。我使用db.session.add()和db.session.commit()打开/关闭会话,但是当我使用时,就会得到一个属性错误:

  • 我从一个列中提取数据的子集,基于满足另一个列中的条件。 我可以得到正确的值,但它在pandas.core.frame.DataFrame中。如何将其转换为列表?