如何反转列值并保持列标题不变

时间:2016-11-08 15:40:02

标签: python pandas numpy 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)进行排序,但这会更改列标题(显然),而且,我也不知道我的列是否以排序的方式开始。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

方法1
重建

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

方法2
指定值

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

均提供
enter image description here

答案 2 :(得分:3)

此外,使用np.fliplr沿水平方向翻转值:

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

enter image description here