2016-11-08 4 views
2

предположим, у меня есть dataframe dfКак поменять значения столбцов и оставить заголовки столбцов, как они

df = pd.DataFrame([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]], 
        columns=['A', 'B', 'C', 'D', 'E']) 

который выглядит

A B C D E 
0 1 2 3 4 5 
1 6 7 8 9 10 

Как изменить порядок из столбцы, но оставить заголовки столбцов как A, B, C, D, E?

Я хочу, чтобы это выглядело как

A B C D E 
0 5 4 3 2 1 
1 10 9 8 7 6 

Я попытался сортировкой индекса столбца df.sort_index(1, ascending=False) но изменяет голову столбцов (очевидно), а также, я не знаю, если мои колонки начать в все равно.

ответ

6

Или вы можете просто поменять местами столбцы:

df.columns = reversed(df.columns) 
df.sortlevel(axis=1) 

# A B C D E 
#0 5 4 3 2 1 
#1 10 9 8 7 6 
+2

Этот ответ замечательный! Чтобы попасть в том же порядке, что и раньше, я бы 'df.reindex_axis (reverse (df.columns))' или что-то подобное. – piRSquared

+0

@piRSquared Да, 'reindex_axis', вероятно, является лучшим решением здесь. – Psidom

3

Метод 1
реконструировать

pd.DataFrame(df.values[:, ::-1], df.index, df.columns) 

Способ 2
присваивают значения

df[:] = df.values[:, ::-1] 
df 

оба дают
enter image description here

3

Кроме того, с помощью np.fliplr который переворачивает значения в горизонтальном направлении:

pd.DataFrame(np.fliplr(df.values), columns=df.columns, index=df.index) 

enter image description here

Смежные вопросы