我有一个很大的Pandas 数据帧-比方说150列,甚至在每次代码运行时都会增加.我正在寻找的是如何才能将几个选定的列放在数据帧的前面(我知道这些列将一直在那里).
我有一个很大的Pandas 数据帧-比方说150列,甚至在每次代码运行时都会增加.我正在寻找的是如何才能将几个选定的列放在数据帧的前面(我知道这些列将一直在那里).
您可以使用索引intersection
/union
:
cols = ['E', 'A', 'B']
out = df[pd.Index(cols).intersection(df.columns).union(df.columns, sort=False)]
如果您确定cols
只包含有效列:
out = df[pd.Index(cols).union(df.columns, sort=False)]
输出:
E A B C D F G H
0 4 0 1 2 3 5 6 7
使用的输入:
A B C D E F G H
0 0 1 2 3 4 5 6 7
如果要将列放在前面,但保持其相对原始顺序,请 Select :
out = df.sort_index(axis=1, key=lambda x: x.isin(cols), ascending=False)
输出:
A B E C D F G H
0 0 1 4 2 3 5 6 7