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

如何正确遍历Pandas DataFrame的行数据?

原因说明

直接对pandas的DataFrame对象执行for循环迭代时,默认遍历的是DataFrame的列名序列,因此你原有代码中循环拿到的x是每一列的列名,df[x]取到的自然是整列数据,和遍历行的预期不符。

逐行遍历的实现方案

可根据实际场景选择以下常用方式:

  • 使用iterrows()方法:入门最友好的逐行遍历方案,每次迭代返回(行索引, 行Series对象)格式的元组,可直接通过列名读取行内对应字段值。
    对应修改后的代码如下:
    import pandas as pd
    df = pd.DataFrame(data, columns = ['Name','New_addy','PHONE1','PHONE2','EMAIL'])
    
    def QuestioningMech(df):
        for idx, row in df.iterrows():
            # 打印当前行全部内容
            print(row)
            # 如需读取指定列,直接通过列名索引即可,例如print(row['Name'])
    
    注意:iterrows()返回的行对象是原数据的副本,直接修改row对象不会同步改动原DataFrame,不要在循环中通过该方式修改源数据。
  • 使用itertuples()方法:遍历性能远高于iterrows(),每次迭代返回命名元组,通过属性即可访问字段值,数据量较大时优先选择该方案。
    代码示例:
    def QuestioningMech(df):
        for row in df.itertuples(index=True):
            # 开启index参数时,行索引存于row.Index属性,列值直接用列名当属性访问即可
            print(row.Name, row.New_addy, row.EMAIL)
    
  • 优先选择非遍历方案:如果遍历行的目的是做逐行计算、字段处理,不要使用显式for循环。pandas原生的向量化操作、df.apply()方法的运行效率比手动循环高1~2个数量级,只有遇到无法向量化的复杂逐行逻辑时,再使用上述两种迭代方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:12:27