iterrows()时从DataFrame读取的值错误

2024-05-15 14:16:28 发布

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

我构建了一个表示层次结构的数据帧。现在我尝试迭代地遍历这个数据帧(迭代虽然不好,但我认为这只适用于我的情况),根据程序计算更改数据帧的值并删除行。在

对于前两次迭代,程序正确读取数据帧行。然而在第三次迭代中(总是),我认为它是在读旧的值。在

万一我还没能说清楚,这是ipython笔记本:Ipython Notebook

初始数据帧:

        c1   c2  c3    c4
   19   21   20  14  0.718004
   18   20   21  14  0.749271
   17   19   18  17  0.724873
   16   18   19  17  0.647143
   15   17   16  11  0.348749
   14   16   17  11  0.847751
   13   15   14   9  0.597245
   12   14   15   9  0.596115
   11   13   12   8  0.549009
   10   12   13   8  0.810719
    9    11   10   7  0.328420
    8    10   11   7  0.859816
    7     9    8   6  0.449287
    6     8    9   6  0.724799
    5     7    6   4  0.320076
    4     6    7   4  0.306391
    3     5    4   2  0.809620
    2     4    5   2  0.450804
    1     3    2   1  0.771699
    0     2    3   1  0.118202

有问题的代码:

^{pr2}$

功能定义

^{3}$

迭代1:行['c3']指向14

第一次迭代的结果帧:

        c1   c2  c3    c4
   19   21   20  9  0.718004
   18   20   21  9  0.749271
   17   19   18  17  0.724873
   16   18   19  17  0.647143
   15   17   16  11  0.348749
   14   16   17  11  0.847751
   13   15   14   9  0.597245
   # Deleted with c1 = 14 
   11   13   12   8  0.549009
   10   12   13   8  0.810719
   ......
   ......

迭代2:读取索引18。第['c3'行]指向9

第二次迭代的结果帧:

        c1   c2  c3    c4
   19   21   20  6  0.718004
   18   20   21  6  0.749271
   17   19   18  17  0.724873
   16   18   19  17  0.647143
   15   17   16  11  0.348749
   .....
   # Deleted row with c1 = 9 
   .........

迭代3:读取索引17。第['c3'行]指向17

第3次迭代的结果帧:

        c1   c2  c3    c4
   19   21   20  6  0.718004
   18   20   21  6  0.749271
   17   19   18  11  0.724873
   16   18   19  11  0.647143
   #Deleted row with c1 17
   14   16   17  11  0.8477
   .....
   ..... 
   .........

迭代4:读取索引16。第['c3'行]指向11。

但是,程序仍然以某种方式将行['c3']读取为17,然后我在执行函数时遇到错误,因为它在c1中找不到与17对应的匹配,因此,我的计算结果是被零除错误。我无法理解它在哪里读到c3为17。打印的数据框显示该索引处的更新值为11。在

有人能帮我解决这个错误吗?它是从哪里冒出来的?在


Tags: 数据程序层次结构错误withipython情况读取数据