如何更改数据帧列的顺序?
我有以下():DataFrame
df
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.rand(10, 5))
我按分配添加更多列:
df['mean'] = df.mean(1)
如何将列移到前面,即将其设置为第一列,而不触及其他列的顺序?mean
我有以下():DataFrame
df
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.rand(10, 5))
我按分配添加更多列:
df['mean'] = df.mean(1)
如何将列移到前面,即将其设置为第一列,而不触及其他列的顺序?mean
一种简单的方法是使用列列表重新分配数据帧,并根据需要重新排列。
这是您现在拥有的:
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
您也可以执行如下操作:
df = df[['mean', '0', '1', '2', '3']]
您可以获取包含以下内容的列列表:
cols = list(df.columns.values)
输出将生成:
['0', '1', '2', '3', 'mean']
...然后很容易手动重新排列,然后将其放入第一个函数