为了账号安全,请及时绑定邮箱和手机立即绑定

如何更改DataFrame列的顺序?

如何更改DataFrame列的顺序?

12345678_0001 2019-06-27 16:09:56
如何更改DataFrame列的顺序?我有以下几点DataFrame (df):import numpy as npimport pandas as pd df = pd.DataFrame(np.random.rand(10, 5))我按任务添加更多栏:df['mean'] = df.mean(1)我怎样才能移动列?mean在前面,即把它设为第一列,而其他列的顺序不受影响?
查看完整描述

3 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

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


这就是你现在所拥有的:


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


查看完整回答
反对 回复 2019-06-27
?
慕斯709654

TA贡献1840条经验 获得超5个赞

你也可以这样做:

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

您可以通过以下方法获得列的列表:

cols = list(df.columns.values)

产出将产生:

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

.然后很容易在将其放入第一个函数之前手动重新排列。


查看完整回答
反对 回复 2019-06-27
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

只需按所需的顺序分配列名:


In [39]: df

Out[39]: 

          0         1         2         3         4  mean

0  0.172742  0.915661  0.043387  0.712833  0.190717     1

1  0.128186  0.424771  0.590779  0.771080  0.617472     1

2  0.125709  0.085894  0.989798  0.829491  0.155563     1

3  0.742578  0.104061  0.299708  0.616751  0.951802     1

4  0.721118  0.528156  0.421360  0.105886  0.322311     1

5  0.900878  0.082047  0.224656  0.195162  0.736652     1

6  0.897832  0.558108  0.318016  0.586563  0.507564     1

7  0.027178  0.375183  0.930248  0.921786  0.337060     1

8  0.763028  0.182905  0.931756  0.110675  0.423398     1

9  0.848996  0.310562  0.140873  0.304561  0.417808     1


In [40]: df = df[['mean', 4,3,2,1]]

现在,“卑鄙”列出现在前面:


In [41]: df

Out[41]: 

   mean         4         3         2         1

0     1  0.190717  0.712833  0.043387  0.915661

1     1  0.617472  0.771080  0.590779  0.424771

2     1  0.155563  0.829491  0.989798  0.085894

3     1  0.951802  0.616751  0.299708  0.104061

4     1  0.322311  0.105886  0.421360  0.528156

5     1  0.736652  0.195162  0.224656  0.082047

6     1  0.507564  0.586563  0.318016  0.558108

7     1  0.337060  0.921786  0.930248  0.375183

8     1  0.423398  0.110675  0.931756  0.182905

9     1  0.417808  0.304561  0.140873  0.310562


查看完整回答
反对 回复 2019-06-27
  • 3 回答
  • 0 关注
  • 6117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信