我有一个包含许多列的大熊猫数据框。
我想更改列的顺序,以便只显示其中的一个子集。我不在乎其余的顺序(而且变量太多,无法一一列出)
例如,如果我的数据帧是这样的
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
对于d
和f
将为False,而False