Skip to content
Advertisement

Selecting/Manuplating cells based on their location in the dataframe

I have a dataframe as below

A   B   C   D   E   F   G   H   I
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9

I want to multiply every 3rd column after the 2 column in the last 2 rows by 5 to get the ouput as below.

How to acomplish this?

A   B   C   D   E   F   G   H   I
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   10  3   4   25  6   7   40  9
1   10  3   4   25  6   7   40  9

I am able to select the cells i need with df.iloc[-2:,1::3] which results in the df as below but I am not able to proceed further.

B   E   H
2   5   8
2   5   8

I know that I can select the same cells with loc instead of iloc, then the calcualtion is straign forward, but i am not able to figure it out. The column names & cell values CANNOT Be used since these change (the df here is just a dummy data)

Advertisement

Answer

You can assign back to same selection of rows/ columns like:

df.iloc[-2:,1::3] = df.iloc[-2:,1::3].mul(5)
#alternative
#df.iloc[-2:,1::3] = df.iloc[-2:,1::3] * 5
print (df)
   A   B  C  D   E  F  G   H  I
0  1   2  3  4   5  6  7   8  9
1  1   2  3  4   5  6  7   8  9
2  1   2  3  4   5  6  7   8  9
3  1   2  3  4   5  6  7   8  9
4  1   2  3  4   5  6  7   8  9
5  1  10  3  4  25  6  7  40  9
6  1  10  3  4  25  6  7  40  9
User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement