Indexing Error in Pandas

Viewed 2024

I'm unable to find out the mistake here in indexing. I am sure this must be some silly mistake. I want to set 'td' values of those rows to 0 whose 'block' size is 1. I'm first finding out such rows and then using those indices to set the values of the column 'td' to 0. Here is the sample data set. Here, except block no 5,7,8 all the other block values should be set to 0 in 'td' column.

    Sid     Itemid  Block       td
0     1  214536502      1  180.591
1     1  214536500      2    37.13
2     1  214536506      3  133.308
3     1  214577561      4      NaN
4     2  214662742      5   41.759
5     2  214662742      5   78.073
6     3  214576500      6      NaN
7     4  214821275      7   26.002
8     4  214821275      7   28.199
9     5  214821371      8   42.289
10    5  214821371      8   45.193

Here is my code. I'm getting unexpected output.

j=k.groupby('Block').Sid.count()==1
te=k['Block'][j[j].index].index
k['td'][te]=0

Expected Output-

    Sid     Itemid  Block       td
0     1  214536502      1       0
1     1  214536500      2       0
2     1  214536506      3       0
3     1  214577561      4       0
4     2  214662742      5   41.759
5     2  214662742      5   78.073
6     3  214576500      6       0
7     4  214821275      7   26.002
8     4  214821275      7   28.199
9     5  214821371      8   42.289
10    5  214821371      8   45.193
1 Answers
Related