Python3使用pandas遍历Excel列单元格仅输出首项问题排查
代码错误说明
直接对DataFrame对象做for循环迭代时,pandas默认的迭代对象是DataFrame的列名列表,不是列内存储的单元格值。你的代码里for cell in variable实际每次循环拿到的是列名,所以只会打印出Column这一个列名字符串,完全没有触达列内的行数据,自然无法遍历全部单元格。
可直接运行的修正方案
根据不同使用场景,选对应写法即可:
- 场景1:只需要遍历目标列的所有单元格值,不需要其他额外信息
import pandas as pd # 初始化/读取数据的逻辑保持不变 variable = pd.DataFrame(data, columns=['Column']) # 直接选中目标列对应的Series对象做遍历 for cell_value in variable['Column']: print(cell_value)
- 场景2:遍历单元格时需要同步拿到值对应的行索引
variable = pd.DataFrame(data, columns=['Column']) # 调用Series的items()方法遍历,返回(索引, 值)元组 for row_index, cell_value in variable['Column'].items(): print(f"第{row_index}行的单元格值为:{cell_value}")
- 场景3:遍历过程中需要同时访问同一行其他列的数据
variable = pd.DataFrame(data, columns=['Column']) # 遍历整行数据,再取目标列的值 for row_index, row_data in variable.iterrows(): cell_value = row_data['Column'] print(cell_value)
补充提示:如果目标列存在空值,遍历时会拿到pandas的NaN类型值,可在遍历前用
variable['Column'] = variable['Column'].fillna('默认值')做缺失值填充,或者用variable = variable.dropna(subset=['Column'])删除空值行。
内容的提问来源于stack exchange,提问作者Lucas Peck
相关产品推荐
相关产品推荐

