
迭代数据帧通常不是推荐的做法,因为 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.A
、row.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)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。