我有一个数据框,按此顺序包含以下各列;
'2','4','9','A','1','B','C'
我希望前三列为ABC,但其余的都无所谓。
输出:
'A','B','C','3','2','9'... and so on
这可能吗?
(有100列,所以我不能将它们全部放在列表中
答案 0 :(得分:3)
您可以尝试像这样重新排序:
first_cols = ['A','B','C']
last_cols = [col for col in df.columns if col not in first_cols]
df = df[first_cols+last_cols]
答案 1 :(得分:3)
cols = ['2','4','9','A','1','B','C']
df = pd.DataFrame(1, range(3), cols)
df
2 4 9 A 1 B C
0 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
2 1 1 1 1 1 1 1
sorted
与key
key = lambda x: (x != 'A', x != 'B', x != 'C')
df[sorted(df, key=key)]
A B C 2 4 9 1
0 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
2 1 1 1 1 1 1 1
更适合第一列成员的较长
first_cols = ['A', 'B', 'C']
key = lambda x: tuple(y != x for y in first_cols)
df[sorted(df, key=key)]