Как изменить порядок определенных столбцов pandas, не удаляя другие столбцы?

#python #pandas

#python #pandas

Вопрос:

у меня есть 9 столбцов, которые я пытаюсь изменить порядок, сохраняя при этом все остальные. я уверен, что об этом спрашивали раньше, но я не уверен, что использую правильную терминологию поиска.

по сути, если мои столбцы данных выглядят как:

 Case  A   C  D  B  E  F  H  G  Name
  

я хочу прибегнуть к:

 Case A  B  C  D  E  F G  H Name
  

без необходимости указывать каждый отдельный столбец, например:

 df = df['Case','A','B','C','D','E','F','G','H','Name]
  

потому что фактические данные содержат около 120 столбцов.

Комментарии:

1. Вам нужно будет предоставить некоторую логику, на основе которой вы хотите изменить порядок столбцов. В приведенном выше примере я бы, вероятно, сделал df.columns = [‘Case’] list(string.asciii_uppercase) [‘Name’] . Для df с 120 столбцами вы не предоставили логику

2. я бы хотел, чтобы гипотетические столбцы A-H следовали порядку предварительно определенного списка

3. насколько сложна ваша сортировка? если подойдет базовая сортировка по списку, если более сложная, поскольку у вас уже есть инициализированные pandas, вы можете преобразовать свои столбцы в серию, отсортировать их, а затем привести их обратно.

4. не очень сложный. в основном у меня есть десять переменных, которые я хочу отсортировать на основе указанного мной списка, сохраняя при этом все остальные переменные. переиндексация по этому списку удаляет все остальные столбцы

Ответ №1:

Вы можете использовать sorted :

 new_columns = ['Case']   sorted(df.columns[1:-1])   ['Name']

df = df[new_columns]
  

Вывод:

 Case    A   B   C   D   E   F   G   H   Name