开发者

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

开发者 https://www.devze.com 2025-04-18 09:22 出处:网络 作者: YH美洲大蠊
目录Pandas Dataframe数据帧的迭代迭代行迭代列总结Pandas Dataframe数据帧的迭代 迭代数据帧通常不是推荐的做法,因为 pandas 的设计初衷是向量化操作以提高效率。然而,在某些情况下,也可能需要逐行或逐列迭代数据
目录
  • Pandas Dataframe数据帧的迭代
    • 迭代行
    • 迭代列
  • 总结

    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.ite编程rrows():  
        print(f"Index: {index}")  
        print(row)  

    2.使用 .itertuples()

    • .itertuples() 方法比 .iterrows() 更快,因为它返回命名元组,这些元组在python中的性能优于字典。
    • 返回的元组的第一个元素是行的索引,其余元素是行中的数据。
    • .itertuples() 返回的是命名元组,可以通过属性名称访问这些元素,例如 row.Arow.B 等。
    import pandas as pd  
    
    dandroidf = 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.columnswww.devze.com:  
        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)  

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号