Мы можем использовать ix
для переупорядочения путем передачи списка:
In [27]:
# get a list of columns
cols = list(df)
# move the column to head of list using index, pop and insert
cols.insert(0, cols.pop(cols.index('Mid')))
cols
Out[27]:
['Mid', 'Net', 'Upper', 'Lower', 'Zsore']
In [28]:
# use ix to reorder
df = df.ix[:, cols]
df
Out[28]:
Mid Net Upper Lower Zsore
Answer_option
More_than_once_a_day 2 0% 0.22% -0.12% 65
Once_a_day 3 0% 0.32% -0.19% 45
Several_times_a_week 4 2% 2.45% 1.10% 78
Once_a_week 6 1% 1.63% -0.40% 65
Другой метод - взять ссылку на столбец и вставить его спереди:
In [39]:
mid = df['Mid']
df.drop(labels=['Mid'], axis=1,inplace = True)
df.insert(0, 'Mid', mid)
df
Out[39]:
Mid Net Upper Lower Zsore
Answer_option
More_than_once_a_day 2 0% 0.22% -0.12% 65
Once_a_day 3 0% 0.32% -0.19% 45
Several_times_a_week 4 2% 2.45% 1.10% 78
Once_a_week 6 1% 1.63% -0.40% 65
Вы также можете использовать loc
для достижения того же результата, что и ix
в устаревших версиях панды из 0.20.0
:
df = df.loc[:, cols]
Вот общий набор кода, который я часто использую, чтобы изменить положение столбцов. Вы можете найти это полезным.
cols = df.columns.tolist()
n = int(cols.index('Mid'))
cols = [cols[n]] + cols[:n] + cols[n+1:]
df = df[cols]
Мне не понравилось, как я должен был явно указать все остальные столбцы в других решениях, чтобы это работало лучше всего для меня. Хотя это может быть медленным для больших фреймов данных ...?
df.set_index('Mid').reset_index()
Вы можете использовать функцию df.reindex () в пандах. df есть
Net Upper Lower Mid Zsore
Answer option
More than once a day 0% 0.22% -0.12% 2 65
Once a day 0% 0.32% -0.19% 3 45
Several times a week 2% 2.45% 1.10% 4 78
Once a week 1% 1.63% -0.40% 6 65
определить список имен столбцов
cols = df.columns.tolist()
cols
Out[13]: ['Net', 'Upper', 'Lower', 'Mid', 'Zsore']
переместить имя столбца туда, где вы хотите
cols.insert(0, cols.pop(cols.index('Mid')))
cols
Out[16]: ['Mid', 'Net', 'Upper', 'Lower', 'Zsore']
, затем использовать df.reindex()
для изменения порядка
df = df.reindex(columns= cols)
out put: df
Mid Upper Lower Net Zsore
Answer option
More than once a day 2 0.22% -0.12% 0% 65
Once a day 3 0.32% -0.19% 0% 45
Several times a week 4 2.45% 1.10% 2% 78
Once a week 6 1.63% -0.40% 1% 65
.ix
устарел в pandas 20.x pandas.pydata.org/pandas-docs/stable/whatsnew.html#deprecate-ix – Aziz Alto 27 June 2017 в 05:41