如何更改DataFrame列的顺序?

如何更改DataFrame列的顺序?

我有以下几点DataFrame (df):

import numpy as npimport pandas as pd

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

我按任务添加更多栏:

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

我怎样才能移动列?mean在前面,即把它设为第一列,而其他列的顺序不受影响?


12345678_0001
浏览 6172回答 3
3回答

MYYA

一种简单的方法是用列表重新分配数据帧,并根据需要重新排列。这就是你现在所拥有的:In [6]: dfOut[6]:          0         1         2         3         4      mean0  0.445598  0.173835  0.343415  0.682252  0.582616  0.4455431  0.881592  0.696942  0.702232  0.696724  0.373551  0.6702082  0.662527  0.955193  0.131016  0.609548  0.804694  0.6325963  0.260919  0.783467  0.593433  0.033426  0.512019  0.4366534  0.131842  0.799367  0.182828  0.683330  0.019485  0.3633715  0.498784  0.873495  0.383811  0.699289  0.480447  0.5871656  0.388771  0.395757  0.745237  0.628406  0.784473  0.5885297  0.147986  0.459451  0.310961  0.706435  0.100914  0.3451498  0.394947  0.863494  0.585030  0.565944  0.356561  0.5531959  0.689260  0.865243  0.136481  0.386582  0.730399  0.561593In [7]: cols = df.columns.tolist()In [8]: colsOut[8]: [0L, 1L, 2L, 3L, 4L, 'mean']重排cols以任何你想要的方式。下面是我将最后一个元素移到第一个位置的方式:In [12]: cols = cols[-1:] + cols[:-1]In [13]: colsOut[13]: ['mean', 0L, 1L, 2L, 3L, 4L]然后像这样重新排序数据:In [16]: df = df[cols]  #    OR    df = df.ix[:, cols]In [17]: dfOut[17]:       mean         0         1         2         3         40  0.445543  0.445598  0.173835  0.343415  0.682252  0.5826161  0.670208  0.881592  0.696942  0.702232  0.696724  0.3735512  0.632596  0.662527  0.955193  0.131016  0.609548  0.8046943  0.436653  0.260919  0.783467  0.593433  0.033426  0.5120194  0.363371  0.131842  0.799367  0.182828  0.683330  0.0194855  0.587165  0.498784  0.873495  0.383811  0.699289  0.4804476  0.588529  0.388771  0.395757  0.745237  0.628406  0.7844737  0.345149  0.147986  0.459451  0.310961  0.706435  0.1009148  0.553195  0.394947  0.863494  0.585030  0.565944  0.3565619  0.561593  0.689260  0.865243  0.136481  0.386582  0.730399

慕斯709654

你也可以这样做:df = df[['mean', '0', '1', '2', '3']]您可以通过以下方法获得列的列表:cols = list(df.columns.values)产出将产生:['0', '1', '2', '3', 'mean'].然后很容易在将其放入第一个函数之前手动重新排列。

红糖糍粑

只需按所需的顺序分配列名:In [39]: dfOut[39]:           0         1         2         3         4  mean0  0.172742  0.915661  0.043387  0.712833  0.190717     11  0.128186  0.424771  0.590779  0.771080  0.617472     12  0.125709  0.085894  0.989798  0.829491  0.155563     13  0.742578  0.104061  0.299708  0.616751  0.951802     14  0.721118  0.528156  0.421360  0.105886  0.322311     15  0.900878  0.082047  0.224656  0.195162  0.736652     16  0.897832  0.558108  0.318016  0.586563  0.507564     17  0.027178  0.375183  0.930248  0.921786  0.337060     18  0.763028  0.182905  0.931756  0.110675  0.423398     19  0.848996  0.310562  0.140873  0.304561  0.417808     1In [40]: df = df[['mean', 4,3,2,1]]现在,“卑鄙”列出现在前面:In [41]: dfOut[41]:    mean         4         3         2         10     1  0.190717  0.712833  0.043387  0.9156611     1  0.617472  0.771080  0.590779  0.4247712     1  0.155563  0.829491  0.989798  0.0858943     1  0.951802  0.616751  0.299708  0.1040614     1  0.322311  0.105886  0.421360  0.5281565     1  0.736652  0.195162  0.224656  0.0820476     1  0.507564  0.586563  0.318016  0.5581087     1  0.337060  0.921786  0.930248  0.3751838     1  0.423398  0.110675  0.931756  0.1829059     1  0.417808  0.304561  0.140873  0.310562
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python