当前位置: 首页 > 网络编程 > python

Pandas Dataframe数据帧的迭代之iterrows(),itertuples(),items()详解<

时间:2025-07-01 21:06:20 python 我要投稿
这篇文章主要介绍了Pandas Dataframe数据帧的迭代之iterrows(),itertuples(),items()使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Pandas Dataframe数据帧的迭代

迭代数据帧通常不是推荐的做法,因为 pandas 的设计初衷是向量化操作以提高效率。然而,在某些情况下,也可能需要逐行或逐列迭代数据。

需要注意的是,迭代数据帧的行或列可能会导致性能下降,特别是对于大型数据集。在可能的情况下,最好使用向量化操作来提高效率。

迭代行

1.使用 .iterrows()

  • .iterrows() 是一个生成器,它迭代数据帧的索引和行。
  • 对于每一行,它返回一个包含索引和该行数据的元组。
import pandas as pd  

df = pd.DataFrame({  
    'A': [1, 2, 3],  
    'B': [4, 5, 6],  
    'C': [7, 8, 9]  
})  

for index, row in df.iterrows():  
    print(f"Index: {index}")  
    print(row)  

2.使用 .itertuples()

  • .itertuples() 方法比 .iterrows() 更快,因为它返回命名元组,这些元组在Python中的性能优于字典。
  • 返回的元组的第一个元素是行的索引,其余元素是行中的数据。
  • .itertuples() 返回的是命名元组,可以通过属性名称访问这些元素,例如 row.Arow.B 等。
import pandas as pd  

df = pd.DataFrame({  
    'A': [10, 20, 30],  
    'B': [40, 50, 60],  
    'C': ['p', 'q', 'r']  
})  
  
for row in df.itertuples():  
    print(row)

'''
Pandas(Index=0, A=10, B=40, C='p')  
Pandas(Index=1, A=20, B=50, C='q')  
Pandas(Index=2, A=30, B=60, C='r')'''

迭代列

迭代列通常更简单,因为可以直接迭代数据帧的列名或访问列数据。

import pandas as pd  
  
# 创建一个DataFrame  
df = pd.DataFrame({  
    'A': [1, 2, 3],  
    'B': [4, 5, 6],  
    'C': [7, 8, 9]  
})  
  
# 方法1: 迭代列名  
for column in df.columns:  
    print(f"Column Name: {column}")  
    # 通过列名访问列数据  
    print(df[column])   
  
# 方法2: 直接迭代DataFrame对象(默认迭代列名)  
for column in df:  
    print(f"Column Name: {column}")  
    print(df[column])  
  
# 方法3: 使用df.items()同时迭代列名和数据  
for column, data in df.items():  
    print(f"Column Name: {column}")  
    # data变量直接包含列数据,无需通过df[column]访问  
    print(data)  

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。