Панды, как поменять местами или изменить порядок столбцов - PullRequest
0 голосов
/ 04 ноября 2018

Я знаю, что есть способы поменять порядок столбцов в пандах Python. Допустим, у меня есть этот пример набора данных:

import pandas as pd    
employee = {'EmployeeID' : [0,1,2],
     'FirstName' : ['a','b','c'],
     'LastName' : ['a','b','c'],
     'MiddleName' : ['a','b', None],
     'Contact' : ['(M) 133-245-3123', '(F)a123@gmail.com', '(F)312-533-2442 jimmy234@gmail.com']}

df = pd.DataFrame(employee)

Один из основных способов сделать это будет:

neworder = ['EmployeeID','FirstName','MiddleName','LastName','Contact']
df=df.reindex(columns=neworder)

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

Может быть 2 случая:

  1. когда вы хотите просто поменять 2 столбца.
  2. когда вы хотите переставить 3 столбца. (Я уверен, что этот случай может быть применен к более чем 3 столбцам.)

Спасибо, ребята.

Ответы [ 2 ]

0 голосов
/ 17 марта 2019

Скажем, ваш текущий порядок столбцов [b, c, d, a], и вы хотите упорядочить его в [a, b, c, d], вы можете сделать это следующим образом:

new_df = old_df[['a', 'b', 'c', 'd']]
0 голосов
/ 04 ноября 2018

Обмен двух столбцов

cols = list(df.columns)
a, b = cols.index('LastName'), cols.index('MiddleName')
cols[b], cols[a] = cols[a], cols[b]
df = df[cols]

Переупорядочить столбец Замена (2 перестановки)

cols = list(df.columns)
a, b, c, d = cols.index('LastName'), cols.index('MiddleName'), cols.index('Contact'), cols.index('EmployeeID')
cols[a], cols[b], cols[c], cols[d] = cols[b], cols[a], cols[d], cols[c]
df = df[cols]

Обмен нескольких

Теперь все сводится к тому, как вы можете играть с кусочками списка -

cols = list(df.columns)
cols = cols[1::2] + cols[::2]
df = df[cols]
...