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

嵌套for循环统计DataFrame列中负值数量为何不准确?

问题分析:DataFrame负值统计结果不准确的原因

你编写的嵌套循环代码运行无报错,但统计结果遗漏大量负值,核心问题出在内层循环的break语句上:

错误代码回顾

input_negative_vars_dict = {}
for col in input_colnames:
    count = 0
    for row in input_df[col]:
        if row < 0:
            count +=1
        else:
            break  # 错误根源所在
    input_negative_vars_dict[col] = count

# 转换为DataFrame并导出
input_negative_vars_df = pd.DataFrame(list(input_negative_vars_dict.items()), columns = ['colname', 'count_input'])

错误原因详解

内层循环中,当遍历到列里**第一个非负值(即row >= 0)**时,else分支的break会直接终止当前列的遍历过程。这意味着代码只会统计列开头连续的负值数量,完全跳过后续所有元素——哪怕后面还有大量负值,也不会被计数。

举个实际例子:如果某列数据是[-3, -1, 2, -5, -2],你的代码只会统计前2个负值,后面的-5和-2因为前面遇到了2触发break,根本不会被遍历统计。

修正思路(可选)

用Pandas内置方法可以更高效且准确地实现需求,避免手动循环的错误:

# 对指定列统计负值数量
negative_counts = input_df[input_colnames].lt(0).sum()
# 转换为目标DataFrame格式
input_negative_vars_df = negative_counts.reset_index(name='count_input').rename(columns={'index':'colname'})

内容的提问来源于stack exchange,提问作者Ivy McKee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:16:19