Xiaotao Luo Xiaotao Luo - 1 month ago 13
R Question

R-Python : how to eliminate specific rows and columns?

Take this R demo as an example :

df <- matrix(1:100, nrow = 10, ncol = 10)


df :

> df
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 11 21 31 41 51 61 71 81 91
[2,] 2 12 22 32 42 52 62 72 82 92
[3,] 3 13 23 33 43 53 63 73 83 93
[4,] 4 14 24 34 44 54 64 74 84 94
[5,] 5 15 25 35 45 55 65 75 85 95
[6,] 6 16 26 36 46 56 66 76 86 96
[7,] 7 17 27 37 47 57 67 77 87 97
[8,] 8 18 28 38 48 58 68 78 88 98
[9,] 9 19 29 39 49 59 69 79 89 99
[10,] 10 20 30 40 50 60 70 80 90 100


Now I want to eliminate
2:8
rows and
3:7
columns, so I did:

> eliminated.rows <- 2:8
> eliminated.cols <- 3:7
> df <- df[-eliminated.rows, -eliminated.cols]


Then I got what I want:

> df
[,1] [,2] [,3] [,4] [,5]
[1,] 1 11 71 81 91
[2,] 9 19 79 89 99
[3,] 10 20 80 90 100


Question is :

How to achieve my goal with Python ?

EDIT:

To be specific, if I got lists of rows and columns to be eliminated, like
eliminated_rows = list(), eliminated_cols = list()
, and I want result
df = df[-eliminated_rows, -eliminated_cols]
with python.

Any help will be appreciated.

Answer

You could do this:

df = pd.DataFrame(np.random.randint(0,100,size=(10, 10)), columns=list('ABCDEFGHIJ'))
row_i= df.index.isin(range(1,8))
col_i=df.index.isin(range(2,7))
df.iloc[~row_i,~col_i]

Be careful of the index as it starts from 0 in python.