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

如何确保for循环完整遍历整个pandas DataFrame?

循环提前终止的核心原因

直接对pandas DataFrame对象做for x in df迭代时,遍历的目标是DataFrame的列名,不是行数据,循环总次数等于DataFrame的列数,和行数无关。
你得到的列表长度为87,恰好说明你的DataFrame总共有87列,循环跑完了所有列名的迭代自然终止,根本没有遍历20434行的逻辑,自然得不到对应长度的列表。

另外你的代码还存在两个隐性问题:

  • 自定义变量命名为list,会覆盖Python内置的list类型,后续如果要调用list相关方法会报错
  • 循环内完全没有使用迭代得到的row变量,靠手动维护自增索引n取值,哪怕修正了遍历方式,也很容易出现索引错位的问题

正确实现方案

你的需求不需要写显式for循环,pandas的向量化接口运行效率比手写行循环高几十到上百倍,代码也更简洁:

# 直接计算16到20列(左闭右开,对应第17到20列)的行方向均值,默认自动跳过NaN值
df["指定列均值"] = df.iloc[:, 16:20].mean(axis=1, skipna=True)

如果确实需要拿到单独的均值列表,直接调用.tolist()即可:

mean_list = df.iloc[:, 16:20].mean(axis=1, skipna=True).tolist()
# 此时len(mean_list)必然等于len(df)也就是20434

如果一定要用循环实现(极度不推荐,数据量大时运行速度极慢),需要用专门的行遍历方法:

import numpy as np
mean_list = []
# 用iterrows()逐行遍历,返回值第一个是行索引,第二个是行数据
for _, row in df.iterrows():
    mean_list.append(np.nanmean(row.iloc[16:20]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 21:57:37