Pandas的索引错误

2024-09-28 04:22:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我找不到索引中的错误。我相信这一定是个愚蠢的错误。我想将“块”大小为1的行的“td”值设置为0。我首先找出这样的行,然后使用这些索引将列'td'的值设置为0。 这是示例数据集。在这里,除了5号、7号、8号块以外,所有其他块值都应在“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

这是我的密码。我得到了意想不到的输出。在

^{pr2}$

预期输出-

    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

Tags: 数据密码示例错误nanblocktdsid
1条回答
网友
1楼 · 发布于 2024-09-28 04:22:10

你应该这样做:

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返回与dataframe相同长度的序列。然后找到那些等于1的值,并使用loc将这些索引位置的列td设置为零。在

相关问题 更多 >

    热门问题