Saurabh
Saurabh

Reputation: 121

How to replace last n values of a row with zero

I want to replace last 2 values of one of the column with zero. I understand for NaN values, I am able to use .fillna(0), but I would like to replace row 6 value of the last column as well.

Weight  Name    Age d_id_max    
0   45  Sam     14  2   
1   88  Andrea  25  1   
2   56  Alex    55  1   
3   15  Robin   8   3   
4   71  Kia     21  3   
5   44  Sia     43  2   
6   54  Ryan    45  1   
7   34  Dimi    65  NaN 

df.drop(df.tail(2).index,inplace=True)

 Weight Name    Age  d_id_max   
0   45  Sam     14  2   
1   88  Andrea  25  1   
2   56  Alex    55  1   
3   15  Robin   8   3   
4   71  Kia     21  3   
5   44  Sia     43  2   
6   54  Ryan    45  0
7   34  Dimi    65  0

Upvotes: 1

Views: 1564

Answers (3)

jezrael
jezrael

Reputation: 863116

Before pandas 0.20.0 (long time) it was job for ix, but now it is deprecated. So you can use:

DataFrame.iloc for get last rows and also Index.get_loc for positions of column d_id_max:

df.iloc[-2:, df.columns.get_loc('d_id_max')] = 0
print (df)
   Weight    Name  Age  d_id_max
0      45     Sam   14       2.0
1      88  Andrea   25       1.0
2      56    Alex   55       1.0
3      15   Robin    8       3.0
4      71     Kia   21       3.0
5      44     Sia   43       2.0
6      54    Ryan   45       0.0
7      34    Dimi   65       0.0

Or DataFrame.loc with indexing index values:

df.loc[df.index[-2:], 'd_id_max'] = 0

Upvotes: 1

Mohit Motwani
Mohit Motwani

Reputation: 4792

You can use:

df['d_id_max'].iloc[-2:] = 0



    Weight    Name  Age  d_id_max
0      45     Sam   14       2.0
1      88  Andrea   25       1.0
2      56    Alex   55       1.0
3      15   Robin    8       3.0
4      71     Kia   21       3.0
5      44     Sia   43       2.0
6      54    Ryan   45       0.0
7      34    Dimi   65       0.0

Upvotes: 0

Andy L.
Andy L.

Reputation: 25259

Try .iloc and get_loc

df.iloc[[-1,-2], df.columns.get_loc('d_id_max')] = 0

Out[232]:
   Weight    Name  Age  d_id_max
0      45     Sam   14       2.0
1      88  Andrea   25       1.0
2      56    Alex   55       1.0
3      15   Robin    8       3.0
4      71     Kia   21       3.0
5      44     Sia   43       2.0
6      54    Ryan   45       0.0
7      34    Dimi   65       0.0

Upvotes: 0

Related Questions