Python函数之iterrows(),iteritems(),itertuples()的区别说明
作者:lili安 发布时间:2021-02-12 13:28:06
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
来源:https://blog.csdn.net/likeyou1314918273/article/details/89514038


猜你喜欢
- 类、构造函数、原型先来说明一点:在上面的内容中提到,每一个函数都包含了一个prototype属性,这个属性指向了一个prototype对象(
- 1、通过复制数据构造张量1.1 torch.tensor()torch.tensor([[0.1, 1.2], [2.2, 3.1], [4
- 创建 var d=new Date(); 要注意的是在JavaScript中月份的值是从0到11(0表示1月)。 设置日期和时间值 设置日期
- Photoshop Express,也就是传说中的web版photoshop,来了。和想象中的web photoshop相比,这个Photo
- vue2.0中使用mapState及mapActions的方式 // 使用mapStatecomputed: { &nb
- 我们在做自动化运维的时候,经常需要调用api中的接口,不过很多人不知道具体的调用方法,在学习python中的requests库后,我们就可以
- 一般打印就用window.print();就OK了 但是一般都是选择性打印所以会调用方法: function preview() { bdh
- 前言基于 Pythgo的 Django 框架,编程实现一个 WEB 程序,为用户提供 城市信息查询功能。用户可输入一个城市名,输出其所在省份
- 简单的小练习,实现将一个指定列表中的数值进行转化,对于其中的非负数不作处理,对于负数需要转化为制定的数值,很简单就不多说了,下面是具体的实现
- Unet是一个最近比较火的网络结构。它的理论已经有很多大佬在讨论了。本文主要从实际操作的层面,讲解pytorch从头开始搭建UNet++的过
- update()方法添加键 - 值对到字典dict2。此函数不返回任何值。语法以下是update()方法的语法:dict.upd
- docker最近迷恋使用doker容器,在docker容器进行部署MySQL,以前针对容器的安全性一直存在怀疑的态度,不过如果能够通过容器也
- 本文实例讲述了Python实现字符串反转的常用方法。分享给大家供大家参考,具体如下:下面是实现python字符串反转的四种方法:1. 切片d
- 今早开机发现,打开SQL Server 2008 的 SQL Server Management Studio,输入sa的密码发现,无法登陆
- 本文实例讲述了python中Flask框架的简单用法。分享给大家供大家参考。具体如下:使用Flask框架的简单入门范例代码,如果你正学习Fl
- k-means 聚类算法思想先随机选择k个聚类中心,把集合里的元素与最近的聚类中心聚为一类,得到一次聚类,再把每一个类的均值作为新的聚类中心
- 本文实例为大家分享了JS作用域链的相关内容,供大家参考,具体内容如下1、所有全局变量和函数都是作为window对象的属性和方法创建的。2、在
- 阅读上一篇:打造设计你自己的字体 Ⅱ永远都在寻觅字体设计的灵感。夏天过后,我买了一套便宜的书法钢笔,说服自己,它会让我的鸡爬字产生脱胎换骨的
- XML同HTML一样,都来自Standard Generalized Markup Language, 即标准通用标记语言,简称SGML。早
- fileinput模块可以对一个或多个文件中的内容进行迭代、遍历等操作。该模块的input()函数有点类似文件readlines()方法,区