无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(iterrows) Python函数之iterrows(),iteritems(),itertuples()的区别说明 Pandas中的迭代函数 全网首发(图文详解1)

前沿技术 Micheal 5个月前 (06-25) 74次浏览 已收录 扫描二维码

(iterrows) Python函数之iterrows(),iteritems(),itertuples()的区别说明

在Python的数据处理库Pandas中,iterrows(), iteritems(), 和 itertuples()是三个经常用来遍历DataFrame的函数,各自的用法和性能特点有所不同。下面详细解释这三个函数的差异,并提供相应的使用方法和示例代码。

1. iterrows()

iterrows()是一个生成器,它迭代DataFrame的行,返回每行的索引和一个包含行数据的Series对象。使用iterrows()遍历较大的DataFrame时可能会比较慢,因为每次迭代会返回一个Series对象。

  • 使用方法:
    import pandas as pd
    
    # 构建示例DataFrame
    df = pd.DataFrame({
      'A': [1, 2, 3],
      'B': [4, 5, 6]
    })
    
    # 使用iterrows遍历
    for index, row in df.iterrows():
      print(f"Index: {index}, A: {row['A']}, B: {row['B']}")

2. iteritems()

iteritems()也是一个生成器,它按列遍历DataFrame,返回每列的索引(即列名)和一个包含列数据的Series对象。这对于需要逐列处理数据的场景很有用。

  • 使用方法:
    import pandas as pd
    
    df = pd.DataFrame({
      'A': [1, 2, 3],
      'B': [4, 5, 6]
    })
    
    # 使用iteritems遍历
    for label, series in df.iteritems():
      print(f"Label: {label}, Values: {list(series)}")

3. itertuples()

itertuples()迭代DataFrame的行,返回一个命名元组。与iterrows()相比,itertuples()通常速度更快,因为它不需要为每行构造一个Series对象。但是,返回的元组不允许你修改其内容。

  • 使用方法:
    import pandas as pd
    
    df = pd.DataFrame({
      'A': [1, 2, 3],
      'B': [4, 5, 6]
    })
    
    # 使用itertuples遍历
    for row in df.itertuples():
      # 访问方式不同,使用索引名称作为属性
      print(f"Index: {row.Index}, A: {row.A}, B: {row.B}")

注意事项和总结

  • iterrows()itertuples()都是按行遍历DataFrame,但itertuples()通常运行速度更快。
  • iteritems()按列遍历DataFrame,适用于需要对每一列分别进行操作的场景。
  • 在进行数据修改时,需要谨慎选择。尤其是使用iterrows()进行修改,可能不会按预期工作,因为它返回的是原始数据的拷贝。
  • 其中itertuples()返回的结果不支持直接修改。如果需要修改数据,可能需要采取其他方式。

在处理大规模数据时,推荐使用itertuples()以提高性能。但具体选择哪种方法还需根据实际的数据处理场景和需求决定。
(赞达拉任务) 魔兽世界怀旧服祖格任务在哪接 ZUG任务交接位置一览 祖尔格拉布任务接受位置 全网首发(图文详解1)
(滚动条美化) Element-ui 滚动条美化的实现 滚动条美化示例 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝