移动数据框列并更改列顺序

Sta*_*cey 6 python dataframe pandas

我有一个数据框df,其中包含以下列数据标题:

date           A    B     C   D    E    F      G          H       I
07/03/2016  2.08    1   NaN NaN 1029    2   2.65    4861688 -0.0388
08/03/2016  2.20    1   NaN NaN 1089    2   2.20    5770819 -0.0447
:                                                                 :   

09/03/2016  2.14    1   NaN NaN 1059    2   2.01    5547959 -0.0514
10/03/2016  2.25    1   NaN NaN 1089    2   1.95    4064482 -0.0520
Run Code Online (Sandbox Code Playgroud)

有没有办法改变列的顺序,以便将列F移动到列H之后的位置.结果df将如下所示:

date           A    B     C   D    E    F      G          H  F       I
07/03/2016  2.08    1   NaN NaN 1029    2   2.65    4861688  2 -0.0388
08/03/2016  2.20    1   NaN NaN 1089    2   2.20    5770819  2 -0.0447
:                                                                    :   

09/03/2016  2.14    1   NaN NaN 1059    2   2.01    5547959  2 -0.0514
10/03/2016  2.25    1   NaN NaN 1089    2   1.95    4064482  2 -0.0520
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 7

使用df.insertwithdf.columns.get_loc动态确定插入的位置。

col = df['F'] # df.pop('F') # if you want it removed
df.insert(df.columns.get_loc('H') + 1, col.name, col, allow_duplicates=True)
Run Code Online (Sandbox Code Playgroud)

df
         date     A  B   C   D     E  F     G        H  F       I
0  07/03/2016  2.08  1 NaN NaN  1029  2  2.65  4861688  2 -0.0388
1  08/03/2016  2.20  1 NaN NaN  1089  2  2.20  5770819  2 -0.0447
...
Run Code Online (Sandbox Code Playgroud)

  • 然而,总的来说,指出其他答案的技术缺陷是有效的......这就是这个网站的全部意义:)我什至让其中一个答案编辑一个更好的答案。他们的初始版本不好正是因为它们是具体的。您不希望您的代码适用于一种情况,而适用于其他 9900 万种情况则失败。 (2认同)

asa*_* kL 5

用这个 :

df = df[['date','A','B','C','D','E','F','G','H','F','I']]
Run Code Online (Sandbox Code Playgroud)

-编辑

columnsName = list(df.columns)
F, H = columnsName.index('F'), columnsName.index('H')
columnsName[F], columnsName[H] = columnsName[H],columnsName[F]
df = df[columnsName]
Run Code Online (Sandbox Code Playgroud)