pandas 对panda Dataframe 中的某些列重新排序

5n0oy7gb  于 2023-03-06  发布在  其他
关注(0)|答案(3)|浏览(176)

我有一个 Dataframe ,包含以下各列,按此顺序排列;

'2','4','9','A','1','B','C'

我希望前3列是ABC,但其余的无所谓。
输出:

'A','B','C','3','2','9'... and so on

这可能吗?
(有100个列,所以我不能把它们都放在一个列表中

tuwxkamq

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

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

sortedkey

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)]
okxuctiv

okxuctiv3#

使用columns.difference

first = ['A', 'B', 'C']

out = df[first+list(df.columns.difference(first, sort=False))]

或者,如果first中的名称可能不存在于df中:

first = ['A', 'B', 'C']

out = df.reindex(columns=first+list(df.columns.difference(first, sort=False)))

相关问题