我有一个很大的Pandas 数据帧-比方说150列,甚至在每次代码运行时都会增加.我正在寻找的是如何才能将几个选定的列放在数据帧的前面(我知道这些列将一直在那里).

推荐答案

您可以使用索引intersection/union:

cols = ['E', 'A', 'B']

out = df[pd.Index(cols).intersection(df.columns).union(df.columns, sort=False)]

如果您确定cols只包含有效列:

out = df[pd.Index(cols).union(df.columns, sort=False)]

输出:

   E  A  B  C  D  F  G  H
0  4  0  1  2  3  5  6  7

使用的输入:

   A  B  C  D  E  F  G  H
0  0  1  2  3  4  5  6  7

如果要将列放在前面,但保持其相对原始顺序,请 Select :

out = df.sort_index(axis=1, key=lambda x: x.isin(cols), ascending=False)

输出:

   A  B  E  C  D  F  G  H
0  0  1  4  2  3  5  6  7

Python-3.x相关问答推荐

需要使用regex匹配字符串的帮助,直到最后一次出现开闭括号,开闭括号中的值是可选的

如何获得大Pandas 的常见时间间隔

PYSMB中的进度条

将列表项的极列水平分解为新列

Django 模型类方法使用错误的 `self`

从 LeetCode 的 Python 解决方案类中理解关键字 self

如何将列表和字典逐行组合在一起

使用gekko python的混合整数非线性规划

使用 OpenCV 从图像中减go 一条线

将元组列表转换为以整个元组为键的字典列表

机器学习实验笔记本的工作区 url

Semaphore信号量 Python 的工作原理

每个数据行中每个数据帧值的总和

通过 requests 库调用 API 获取访问令牌

Await Future 来自 Executor:Future 不能在await表达式中使用

Visual Studio Code 中的 Python 3.x 类型提示

无法在 Windows 8 中使用 Python 3.3 找到 vcvarsall.bat

Python 3 - Zip 是 pandas 数据框中的迭代器

异常被忽略是什么类型的消息?

将 Python SIGINT 重置为默认信号处理程序