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

 更新时间:2022年05月12日 09:59:44   作者:lili安  
这篇文章主要介绍了Python函数之iterrows(),iteritems(),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

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

相关文章

  • Python实现matplotlib显示中文的方法详解

    Python实现matplotlib显示中文的方法详解

    这篇文章主要介绍了Python实现matplotlib显示中文的方法,结合实例形式详细总结分析了Python使用matplotlib库绘图时显示中文的相关操作技巧与注意事项,需要的朋友可以参考下
    2018-02-02
  • python抓取网页中的图片示例

    python抓取网页中的图片示例

    这篇文章主要介绍了python抓取网页中图片的示例,需要的朋友可以参考下
    2014-02-02
  • 打印出python 当前全局变量和入口参数的所有属性

    打印出python 当前全局变量和入口参数的所有属性

    打印出python 当前全局变量和入口参数的所有属性的实现代码。
    2009-07-07
  • python3实现名片管理系统(控制台版)

    python3实现名片管理系统(控制台版)

    这篇文章主要为大家详细介绍了python3实现名片管理系统控制台版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • Python中第三方库Requests库的高级用法详解

    Python中第三方库Requests库的高级用法详解

    虽然Python的标准库中urllib2模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人实在感觉不好。它已经不适合现在的时代,不适合现代的互联网了。而Requests的诞生让我们有了更好的选择。本文就介绍了Python中第三方库Requests库的高级用法。
    2017-03-03
  • freeswitch开源通信 python模块介绍

    freeswitch开源通信 python模块介绍

    freeswitch支持多种语言的业务开发,包括C/C++,java,python,js,lua,Golang等等。freeswitch在使用python做业务开发时,有俩种接入方式,一种是ESL接口,另一种是mod_python模块。本文主要介绍的是fs内部的mod_python语言支持模块,需要的朋友可以参考下面文章内容
    2021-09-09
  • python 排列组合之itertools

    python 排列组合之itertools

    python 排列组合之itertools,需要的朋友可以参考一下
    2013-03-03
  • python简单爬虫--get方式详解

    python简单爬虫--get方式详解

    本篇文章介绍了python爬虫中get和post方法介绍以及cookie作用,对此有兴趣的朋友学习下,希望能够给你带来帮助
    2021-09-09
  • Python替换字符串replace()函数使用方法详解

    Python替换字符串replace()函数使用方法详解

    Python中的replace()方法是把字符串中的old(旧字符串)替换成new(新字符串),如果指定第三个参数max,则替换次数不超过max次(将旧的字符串用心的字符串替换不超过max次,本文就给大家讲讲Python replace()函数的使用方法,需要的朋友可以参考下
    2023-07-07
  • Python实现读取文件的方法总结

    Python实现读取文件的方法总结

    这篇文章主要为大家详细介绍了Python中实现读取文件效果的几种方法总结,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-09-09

最新评论