0

I am trying to reverse the n last rows and columns in a dataframe in python.

import numpy as np
import pandas as pd

df = pd.DataFrame(index=range(15), columns=range(15))

However, I want to change the dataframe that it looks like this:

#columns:
0 1 2 3 ... 10 15 14 13 12 11

#rows: 
0 1 2 3 ... 10 15 14 13 12 11

i.e.: the last 5 elements of rows and columns should be reversed but the primer 10 should have the 'normal' form

Rabinzel
  • 7,757
  • 3
  • 10
  • 30
  • this should help https://stackoverflow.com/questions/13148429/how-to-change-the-order-of-dataframe-columns/51935892#51935892 – Yuca Aug 09 '22 at 17:57
  • Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking. – Community Aug 09 '22 at 20:18

1 Answers1

0

IIUC, you can try

n = 10

df.columns = df.columns[:n+1].append(df.columns[:-(df.shape[1]-n):-1])
df.index = df.index[:n+1].append(df.index[:-(df.shape[0]-n):-1])
# or if you also want to change the content when revert
out = df.loc[df.index[:n+1].append(df.index[:-(df.shape[0]-n):-1]),
             df.columns[:n+1].append(df.columns[:-(df.shape[1]-n):-1])]
print(df)

     0    1    2    3    4    5    6    7    8    9    10   14   13   12   11
0   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
1   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
2   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
3   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
4   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
5   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
6   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
7   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
8   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
9   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
10  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
14  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
13  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
12  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
11  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
Ynjxsjmh
  • 28,441
  • 6
  • 34
  • 52