我无法找出索引中的错误。我相信这一定是个愚蠢的错误。我想将那些“ block ”大小为 1 的行的“td”值设置为 0。我首先找出这些行,然后使用这些索引将列“td”的值设置为 0。 这是示例数据集。这里,除了第 5、7、8 号 block 外,所有其他 block 值都应在“td”列中设置为 0。
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
预期输出-
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
最佳答案
这是你完成作业的方式:
k.ix[(k.groupby('Block').Sid.transform('count') == 1), 'td'] = 0
>>> k
Sid Itemid Block td
0 1 214536502 1 0.000
1 1 214536500 2 0.000
2 1 214536506 3 0.000
3 1 214577561 4 0.000
4 2 214662742 5 41.759
5 2 214662742 5 78.073
6 3 214576500 6 0.000
7 4 214821275 7 26.002
8 4 214821275 7 28.199
9 5 214821371 8 42.289
10 5 214821371 8 45.193
Transform 返回与数据框长度相同的序列。然后找到等于 1 的那些,并使用 loc
将那些索引位置处的列 td
设置为零值。
关于python - Pandas 中的索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35926349/