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
猜你喜欢
- 求和try: while True: n=input() s=1 for x in raw_input(
- __import__() 函数用于动态加载类和函数 。如果一个模块经常变化就可以使用 __import__() 来动态载入。语法__impo
- bootstrap 中的bootstrapValidator可以对前端的数据进行验证,但是有的时候我们需要动态的添加验证,这样需要我们动态的
- 目录列表拼接三种方式方式一:简简单单的“+”方法二:切片赋值方式三:列表自带的extend()列表去重的三种方式利用集合set的特性利用字典
- 一、什么是线程?线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程。车间负责把资源整合到一起,
- 注意:这种方法十分受光线变化影响自己在家拿着手机瞎晃的成果图:源代码:# -*- coding: utf-8 -*- ""
- 前言相信大家初入某个项目,一般都要看代码。有时候,想把代码文件打印下来看,不过一般代码文件数量都在两位数或更多,逐一打开、打印,确实太耗费精
- 二分查找算法:简单的说,就是将一个数组先排序好,比如按照从小到大的顺序排列好,当给定一个数据,比如target,查找target在数组中的位
- 本文实例为大家分享了python可视化动态CPU性能监控的具体代码,供大家参考,具体内容如下打算开发web性能监控,以后会去学js,现在用m
- python的pdb调试命令的命令整理及实例一、命令整理pdb调试命令完整命令简写命令描述argsa打印当前函数的参数breakb设置断点c
- 1.新建site-packages目录,进入到site-packages目录下;2.在site-packages目录下执行pip freez
- 匿名函数lambda表达式 什么是匿名函数?匿名函数,顾名思义就是没有名字的函数,在程序中不用使用 def 进行定义,可以直接使用 lamb
- 前言Python 相对导入与绝对导入,这两个概念是相对于包内导入而言的。包内导入即是包内的模块导入包内部的模块。Python import
- 如何在生产上部署Django?Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式。uwsgi介绍uW
- 本文研究的主要是Python多线程threading和multiprocessing模块的相关内容,具体介绍如下。线程是一个进程的实体,是由
- 经纬度坐标转换最常见办法就是调用第三方 API,例如百度、高德地图等服务平台,提供了相应的功能接口,它们的这类技术已经非常成熟啦,准确稳定,
- 前言:Python基础知识+结构+数据类型Python基础学习列表+元组+字典+集合今天的是Python基础学习的第三篇了,前面的知识点给大
- 使用Python进行插值非常方便,可以直接使用scipy中的interpolateimport numpy as npx1 = np.lin
- 相信现在很多人都喜欢玩王者荣耀这款手游,里面好看的皮肤令人爱不释手。那么你有没有想过把王者荣耀高清皮肤设置为壁纸,像下面这样今天就来教大家如
- dataclass语法一、 简介官方文档的地址为:https://docs.python.org/3.9/library/dataclass