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

目录
  • iterrows(),iteritems(),itertuples()区别
  • DataFrame数据遍历方式 iteritems iterrows itertuples
    • 迭代DataFrame
    • iteritems()
    • iterrows()
    • itertuples()

iterrows(),iteritems(),itertuples()区别

Python函数之iterrows, iteritems, itertuples对dataframe进行遍历

  • iterrows(): 将DataFrame迭代为(insex, Series)对。
  • iteritems(): 将DataFrame迭代为(列名, Series)对
  • itertuples(): 将DataFrame迭代为元祖。

DataFrame数据遍历方式 iteritems iterrows itertuples

对Pandas对象进行基本迭代的行为取决于类型。在遍历一个Series时,它被视为类似数组,并且基本迭代产生这些值。其他数据结构(如DataFrame和Panel)遵循类似于字典的惯例,即迭代对象的 键 。

总之,基本的迭代产生

  • Series - 值
  • DataFrame - 列标签
  • Panel - 项目标签

迭代DataFrame

迭代DataFrame会给出列名称。让我们考虑下面的例子来理解相同的情况。

import pandas as pd
import numpy as np

N=20

df = pd.DataFrame({
    'A': pd.date_range(start='2021-01-01',periods=N,freq='D'),
    'x': np.linspace(0,stop=N-1,num=N),
    'y': np.random.rand(N),
    'C': np.random.choice(['Low','Medium','High'],N).tolist(),
    'D': np.random.normal(100, 10, size=(N)).tolist()
    })

for col in df:
   print(col)

其 输出 如下

A
C
D
x
y

要迭代DataFrame的行,我们可以使用以下函数 -

  • iteritems() - 遍历(键,值)对
  • iterrows() - 遍历行(索引,序列)对
  • itertuples() - 遍历 行为namedtuples

iteritems()

将每列作为关键字值进行迭代,并将标签作为键和列值作为Series对象进行迭代。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(4,3),columns=['col1','col2','col3'])
for key,value in df.iteritems():
   print(key,value)

其 输出 如下 :

col1 0    0.265778
1   -0.814620
2   -2.384911
3    0.525155
Name: col1, dtype: float64
col2 0    2.580894
1   -0.408090
2    0.641011
3    0.591557
Name: col2, dtype: float64
col3 0   -0.830860
1    0.413565
2   -2.251128
3   -0.392120
Name: col3, dtype: float64

请注意,每个列在Series中作为键值对单独迭代。

iterrows()

iterrows()返回产生每个索引值的迭代器以及包含每行数据的序列。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3'])
for row_index,row in df.iterrows():
   print(row_index,row)

其 输出 如下

0 col1   -0.536180
col2   -0.422245
col3   -0.049302
Name: 0, dtype: float64
1 col1   -0.577882
col2    0.546570
col3    1.210293
Name: 1, dtype: float64
2 col1    0.593660
col2    0.621967
col3    0.456040
Name: 2, dtype: float64
3 col1    0.874323
col2    0.303070
col3   -0.107727
Name: 3, dtype: float64

注 - 由于 iterrows() 遍历行,因此它不会保留行中的数据类型。0,1,2是行索引,col1,col2,col3是列索引。

itertuples()

itertuples()方法将返回一个迭代器,为DataFrame中的每一行生成一个命名的元组。元组的第一个元素将是行的相应索引值,而其余值是行值。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3'])
for row in df.itertuples():
    print(row)

其 输出 如下

Pandas(Index=0, col1=-0.4029137277161786, col2=1.3034737750584355, col3=0.8197109653411052)
Pandas(Index=1, col1=-0.43013422882386704, col2=-0.2536252662252256, col3=0.9102527012477817)
Pandas(Index=2, col1=0.25877683462048057, col2=-0.7725072659033637, col3=-0.013946376730006241)
Pandas(Index=3, col1=0.3611368595844501, col2=-0.2777909818571997, col3=0.9396027945103758)

注 : 不要在迭代时尝试修改任何对象。 迭代是为了读取而迭代器返回原始对象(视图)的副本,因此这些更改不会反映到原始对象上。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3'])

for index, row in df.iterrows():
   row['a'] = 10
print(df)

其 输出 如下

col1      col2      col3
0  0.579118  0.444899 -0.693009
1  0.479294  0.080658 -0.126600
2  0.095121 -1.870492  0.596165
3  1.885483 -0.122502 -1.531169

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

(0)

相关推荐

  • python 字典item与iteritems的区别详解

    综述迭代器 对于原生支持随机访问的数据结构(如tuple.list),迭代器和经典for循环的索引访问相比并无优势,反而丢失了索引值(可以使用内建函数enumerate()找回这个索引值).但对于无法随机访问的数据结构(比如set)而言,迭代器是唯一的访问元素的方式. 另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素.迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁.这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件,或是

  • Python字典中items()函数案例详解

    Python3:字典中的items()函数 一.Python2.x中items():   和之前一样,本渣渣先贴出来python中help的帮助信息: >>> help(dict.items) Help on method_descriptor: items(...) D.items() -> list of D's (key, value) pairs, as 2-tuples >>> help(dict.iteritems) Help on method_de

  • Python iter()函数用法实例分析

    本文实例讲述了Python iter()函数用法.分享给大家供大家参考,具体如下: python中的迭代器用起来非常灵巧,不仅可以迭代序列,也可以迭代表现出序列行为的对象,例如字典的键.一个文件的行,等等. 迭代器就是有一个next()方法的对象,而不是通过索引来计数.当使用一个循环机制需要下一个项时,调用迭代器的next()方法,迭代完后引发一个StopIteration异常. 但是迭代器只能向后移动.不能回到开始.再次迭代只能创建另一个新的迭代对象. 反序迭代工具:reversed()将返回

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

    目录 iterrows(),iteritems(),itertuples()区别 DataFrame数据遍历方式 iteritems iterrows itertuples 迭代DataFrame iteritems() iterrows() itertuples() iterrows(),iteritems(),itertuples()区别 Python函数之iterrows, iteritems, itertuples对dataframe进行遍历 iterrows(): 将DataFrame

  • Python函数__new__及__init__作用及区别解析

    [同] 二者均是Python面向对象语言中的函数,__new__比较少用,__init__则用的比较多. [异] __new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例对象,是个静态方法.__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值,通常用在初始化一个类实例的时候.是一个实例方法. 也就是:__new__先被调用,__init__后被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例

  • Python函数参数类型*、**的区别

    刚开始学习python,python相对于java确实要简洁易用得多.内存回收类似hotspot的可达性分析, 不可变对象也如同java得Integer类型,with函数类似新版本C++的特性,总体来说理解起来比较轻松.只是函数部分参数的"*"与"**",闭包等问题,着实令人迷糊了一把,弄清概念后写下此文记录下来,也希望本文能够帮助其他初学者. 所以本文是一篇学习笔记,着重于使用的细节和理解上,首先分别介绍了函数各种参数类型在调用和声明时的区别,及其在混用时需要注意

  • 老生常谈python函数参数的区别(必看篇)

    在运用python的过程中,发现当函数参数为list的时候,在函数内部调用list.append()会改变形参,与C/C++的不太一样,查阅相关资料,在这里记录一下. python中id可以获取对象的内存地址 >>> num1 = 10 >>> num2 = num1 >>> num3 = 10 >>> id(num1) >>> id(num2) >>> id(num3) 可以看到num1.num2

  • 浅谈python socket函数中,send与sendall的区别与使用方法

    在python socket编程中,有两个发送TCP的函数,send()与sendall(),区别如下: socket.send(string[, flags]) 发送TCP数据,返回发送的字节大小.这个字节长度可能少于实际要发送的数据的长度.换句话说,这个函数执行一次,并不一定能发送完给定的数据,可能需要重复多次才能发送完成. 例子: data = "something you want to send" while True: len = s.send(data[len:]) if

  • Python函数any()和all()的用法及区别介绍

    引子 平常的文本处理工作中,我经常会遇到这么一种情况:用python判断一个string是否包含一个list里的元素. 这时候使用python的内置函数any()会非常的简洁: fruits = ['apple', 'orange', 'peach'] str = "I want some apples" if any(element in str for element in fruits): print "string contains some fruits."

  • 详解python while 函数及while和for的区别

    1.while循环(只有在条件表达式成立的时候才会进入while循环) while 条件表达式: pass while 条件表达式: pass else: pass 不知道循环次数,但确定循环条件的时候用while # 如果说年利率是6%,存入1000到第几年本钱翻倍 money = 10000 year = 0 while money < 20000: money = money*(1+0.06) year += 1 print('第 {0} 年本钱翻倍了,总共有 {1} 元'.format(

  • Python函数中apply、map、applymap的区别

    目录 一.总结 二.实操对比 一.总结 apply -- 应用在 dataFrame 上,用于对 row 或者 column 进行计算 applymap -- 应用在 dataFrame 上,元素级别的操作 map -- python 系统自带函数,应用在 series 上, 元素级别的操作 二.实操对比 构建测试数据框: import pandas as pd import numpy as np df = pd.DataFrame(np.random.randint(0, 10, (4, 3

  • python 函数、变量中单下划线和双下划线的区别详解

    目录 一._func 单下划线开头 --口头私有变量 1.1.在模块中使用单下划线开头 1.2.在类中使用单下划线开头 二.__func 双下划线开头的函数 --私有变量 2.1.在模块中使用双下划线开头 2.2.在类中使用双下划线开头 三.前后都有双下划线 --特殊变量 一._func 单下划线开头 --口头私有变量 1.1.在模块中使用单下划线开头 在Python中,通过单下划线_来实现模块级别的私有化,变量除外.一般约定以单下划线开头的函数为模块私有的,也就是说from moduleNam

随机推荐