我有一个 Dataframe ,包含以下各列,按此顺序排列;
'2','4','9','A','1','B','C'
我希望前3列是ABC,但其余的无所谓。输出:
'A','B','C','3','2','9'... and so on
这可能吗?(有100个列,所以我不能把它们都放在一个列表中
tuwxkamq1#
您可以尝试这样重新排序:
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]
ohtdti5x2#
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)]
okxuctiv3#
使用columns.difference:
columns.difference
first = ['A', 'B', 'C'] out = df[first+list(df.columns.difference(first, sort=False))]
或者,如果first中的名称可能不存在于df中:
first
df
first = ['A', 'B', 'C'] out = df.reindex(columns=first+list(df.columns.difference(first, sort=False)))
3条答案
按热度按时间tuwxkamq1#
您可以尝试这样重新排序:
ohtdti5x2#
设置
sorted
与key
更适用于较长的第一立柱构件
okxuctiv3#
使用
columns.difference
:或者,如果
first
中的名称可能不存在于df
中: