Brian
Brian

Reputation: 1645

How do I reverse the column values and leave the column headers as they are

suppose I have a dataframe df

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

Which looks like this

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

How do I reverse the order of the column values but leave the column headers as A, B, C, D, E?

I want it to look like

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

I've tried sorting the column index df.sort_index(1, ascending=False) but that changes the column heads (obviously) and also, I don't know if my columns start off in a sorted way anyway.

Upvotes: 2

Views: 903

Answers (3)

Nickil Maveli
Nickil Maveli

Reputation: 29719

Also, using np.fliplr which flips the values along the horizontal direction:

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

enter image description here

Upvotes: 3

piRSquared
piRSquared

Reputation: 294508

method 1
reconstruct

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

method 2
assign values

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

both give
enter image description here

Upvotes: 3

akuiper
akuiper

Reputation: 215077

Or you can just reverse your columns:

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

Upvotes: 6

Related Questions