ここでインデックス作成の間違いを見つけることができません。これはばかげた間違いに違いないと確信しています。「ブロック」サイズが 1 の行の「td」値を 0 に設定したいです。最初にそのような行を見つけてから、それらのインデックスを使用して列「td」の値を 0 に設定します。サンプルデータセット。ここで、ブロック番号 5、7、8 を除いて、他のすべてのブロック値は「td」列で 0 に設定する必要があります。
Sid Itemid ブロック td 0 1 214536502 1 180.591 1 1 214536500 2 37.13 2 1 214536506 3 133.308 3 1 214577561 4 ナン 4 2 214662742 5 41.759 5 2 214662742 5 78.073 6 3 214576500 6 ナン 7 4 214821275 7 26.002 8 4 214821275 7 28.199 9 5 214821371 8 42.289 10 5 214821371 8 45.193
これが私のコードです。予期しない出力が得られます。
j=k.groupby('Block').Sid.count()==1
te=k['Block'][j[j].index].index
k['td'][te]=0
期待される出力 -
Sid Itemid ブロック 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