如果列太多,如何更改pandas数据框中的列顺序?

ℕʘʘ*_*ḆḽḘ 3 python dataframe pandas

我有一个包含许多列的大型pandas数据框.

我想更改列的顺序,以便只显示其中的一部分.我不关心其余的排序(并且有太多的变量可以列出所有)

例如,如果我的数据框是这样的

a b c d e f g h i
5 8 7 2 1 4 1 2 3
1 4 2 2 3 4 1 5 3
Run Code Online (Sandbox Code Playgroud)

我想指定列的子集

mysubset=['d','f'] 并重新排序数据框,以便现在列的顺序

d,f,a,b,c,e,g,h,i

有没有办法以熊猫式的方式做到这一点?

DSM*_*DSM 7

您可以使用列掩码:

>>> mysubset = ["d","f"]
>>> mask = df.columns.isin(mysubset)
>>> pd.concat([df.loc[:,mask], df.loc[:,~mask]], axis=1)
   d  f  a  b  c  e  g  h  i
0  2  4  5  8  7  1  1  2  3
1  2  4  1  4  2  3  1  5  3
Run Code Online (Sandbox Code Playgroud)

或使用sorted:

>>> mysubset = ["d","f"]
>>> df[sorted(df, key=lambda x: x not in mysubset)]
   d  f  a  b  c  e  g  h  i
0  2  4  5  8  7  1  1  2  3
1  2  4  1  4  2  3  1  5  3
Run Code Online (Sandbox Code Playgroud)

这工作,因为x not in mysubset将假的df,和假<真.