You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历比较两个DataFrame的值并更新第三个DataFrame,解决循环报错问题

问题根因
  • 错误1:loc的第二个参数需要传入列名,你直接把iterrows()返回的整行Series对象row1、row2当作列名传入,pandas会尝试把Series里的所有值当作列名匹配,自然匹配不到,触发报错。
  • 错误2:两层循环使用同一个index变量名,内层循环的行索引会覆盖外层的行索引,无法正确匹配两个DataFrame的对应行位置。
  • 错误3:完全没有必要使用嵌套循环遍历,pandas原生支持同规格DataFrame的向量化操作,执行效率远高于Python层循环。
最优解决方案

直接通过向量化比较一步生成结果,代码如下:

CountResult = (PORResult > p90Result).astype(int)

说明:两个同规格DataFrame直接用>比较会返回同样尺寸的布尔型DataFrame,PORResult值大于p90Result的位置为True,否则为False;使用astype(int)转换后,True会转为1,False转为0,完全匹配你的需求。

循环写法(仅作逻辑参考,不推荐生产使用)

如果你想要手动遍历理解逻辑,正确的循环写法应该遍历行索引和列名,示例如下:

for row_idx in PORResult.index:
    for col_name in PORResult.columns:
        if PORResult.loc[row_idx, col_name] > p90Result.loc[row_idx, col_name]:
            CountResult.at[row_idx, col_name] = 1

内容的提问来源于stack exchange,提问作者Megan Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:15:08