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

pandas导入CSV生成dataframe后遍历仅返回列如何实现按行遍历

问题原因

pandas 中直接对 DataFrame 执行迭代操作时,默认遍历的是 DataFrame 的列名,这是 pandas 的内置设计规则,因此你写的循环只会输出列名而非行数据。另外补充:pd.read_csv() 本身返回的就是 DataFrame 类型,你额外执行的 DataFrame(table_csv) 转换步骤是冗余的,可以直接省略。

可行实现方案

根据你的使用场景可以选择以下几种方案,优先推荐向量化操作,性能远高于循环遍历:

  • 方案1:iterrows() 逐行遍历(适合小数据量简单场景)
    iterrows() 会逐行返回 (行索引, 行数据Series) 格式的元组,注意直接修改返回的行数据副本不会生效,需要通过 loc 定位修改原 DataFrame:
    for index, row in table_dataframe.iterrows():
        # 打印整行数据
        print(row)
        # 示例:修改当前行指定列的值
        table_dataframe.loc[index, '目标列名'] = 替换的新值
    
  • 方案2:itertuples() 逐行遍历(适合大数据量场景)
    该方法返回命名元组,遍历速度比 iterrows() 快数倍,适合数据量较大的场景:
    for row in table_dataframe.itertuples(index=True):
        # 打印当前行某列的值,直接通过 .列名 访问即可
        print(row.列名)
        # 修改方式和上面一致,通过行索引定位
        table_dataframe.loc[row.Index, '目标列名'] = 替换的新值
    
  • 方案3:向量化操作(优先推荐)
    如果你要执行的是批量修改逻辑,优先用 pandas 内置的向量化操作,完全不需要写循环,性能最优:
    # 示例:给满足条件的行批量赋值,比如给age列大于18的行的is_adult列设为1
    table_dataframe.loc[table_dataframe['age'] > 18, 'is_adult'] = 1
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:48:00