我有一个包含许多列的大熊猫数据框。
我想更改列的顺序,以便只显示其中的一个子集。我不在乎其余的顺序(而且变量太多,无法一一列出)
例如,如果我的数据帧是这样的

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

我想指定列的子集
mysubset=['d','f']并重新排序数据帧,以便
列的顺序是
d,f,a,b,c,e,g,h,i
有没有办法用熊猫式的方式做到这一点?

最佳答案

可以使用列掩码:

>>> 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

或使用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

这是因为x not in mysubset对于df将为False,而False
09-26 05:32