Python-如何更改DataFrame列的顺序?

发布于 2021-02-02 23:20:03

我有以下DataFrame(df)

import numpy as np
import pandas as pd

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

我通过分配添加了更多列:

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

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

关注者
0
被浏览
85
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    你还可以执行以下操作:

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

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

    cols = list(df.columns.values)
    

    输出将产生:

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

    …然后轻松将其放到第一个功能中即可手动重新排列



  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    一种简单的方法是使用列的列表重新分配数据框,并根据需要重新排列。

    这是你现在拥有的:

    In [6]: df
    Out[6]:
              0         1         2         3         4      mean
    0  0.445598  0.173835  0.343415  0.682252  0.582616  0.445543
    1  0.881592  0.696942  0.702232  0.696724  0.373551  0.670208
    2  0.662527  0.955193  0.131016  0.609548  0.804694  0.632596
    3  0.260919  0.783467  0.593433  0.033426  0.512019  0.436653
    4  0.131842  0.799367  0.182828  0.683330  0.019485  0.363371
    5  0.498784  0.873495  0.383811  0.699289  0.480447  0.587165
    6  0.388771  0.395757  0.745237  0.628406  0.784473  0.588529
    7  0.147986  0.459451  0.310961  0.706435  0.100914  0.345149
    8  0.394947  0.863494  0.585030  0.565944  0.356561  0.553195
    9  0.689260  0.865243  0.136481  0.386582  0.730399  0.561593
    
    In [7]: cols = df.columns.tolist()
    
    In [8]: cols
    Out[8]: [0L, 1L, 2L, 3L, 4L, 'mean']
    

    cols以你想要的任何方式重新排列。这就是我将最后一个元素移到第一个位置的方式:

    In [12]: cols = cols[-1:] + cols[:-1]
    
    In [13]: cols
    Out[13]: ['mean', 0L, 1L, 2L, 3L, 4L]
    

    然后像这样重新排列数据框:

    In [16]: df = df[cols]  #    OR    df = df.ix[:, cols]
    
    In [17]: df
    Out[17]:
           mean         0         1         2         3         4
    0  0.445543  0.445598  0.173835  0.343415  0.682252  0.582616
    1  0.670208  0.881592  0.696942  0.702232  0.696724  0.373551
    2  0.632596  0.662527  0.955193  0.131016  0.609548  0.804694
    3  0.436653  0.260919  0.783467  0.593433  0.033426  0.512019
    4  0.363371  0.131842  0.799367  0.182828  0.683330  0.019485
    5  0.587165  0.498784  0.873495  0.383811  0.699289  0.480447
    6  0.588529  0.388771  0.395757  0.745237  0.628406  0.784473
    7  0.345149  0.147986  0.459451  0.310961  0.706435  0.100914
    8  0.553195  0.394947  0.863494  0.585030  0.565944  0.356561
    9  0.561593  0.689260  0.865243  0.136481  0.386582  0.730399
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看