我有以下DataFrame(df):

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(10, 5))

我通过分配添加更多列:

df['mean'] = df.mean(1)

如何将列的意思移到前面,即将其设置为第一列,而其他列的顺序保持不变?


当前回答

你也可以这样做:

df = df[['mean', '0', '1', '2', '3']]

您可以通过以下方式获取列列表:

cols = list(df.columns.values)

输出将产生:

['0', '1', '2', '3', 'mean']

…然后,在将其放入第一个函数之前,可以手动重新排列

其他回答

使用T怎么样?

df = df.T.reindex(['mean', 0, 1, 2, 3, 4]).T

这里有一种移动一个现有列的方法,它将修改现有的数据帧。

my_column = df.pop('column name')
df.insert(3, my_column.name, my_column)  # Is in-place

您可以执行以下操作(从Aman的答案中借用零件):

cols = df.columns.tolist()
cols.insert(0, cols.pop(-1))

cols
>>>['mean', 0L, 1L, 2L, 3L, 4L]

df = df[cols]

我认为这是一个略为简洁的解决方案:

df.insert(0, 'mean', df.pop("mean"))

这个解决方案有点类似于@JoeHeffer的解决方案,但这是一条直线。

这里,我们从数据帧中删除列“mean”,并将其附加到具有相同列名的索引0。

您可以使用以下名称列表对数据帧列进行重新排序:

df=df.filter(list_of_col_name)