Pandas DataFrame数据遍历的三种方式 iteritems iterrows itertuples

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

总之,基本的迭代产生

Series – 值

DataFrame – 列标签

Panel – 项目标签

迭代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['col1'] = 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

Original: https://blog.csdn.net/Datapad/article/details/115231446
Author: AiFool
Title: Pandas DataFrame数据遍历的三种方式 iteritems iterrows itertuples

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/751133/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 3D人体骨架检测(mediapipe)

    在本教程中,我们将学习如何使用python中的mediapipe库进行实时3D骨架检测。 首先,我们得用pip下载下来我们需要用到的模组: pip install mediapip…

    Python 2023年8月1日
    059
  • 【使用pytest重构项目】pytest allure生成测试报告

    前言 一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210420。 6、使用pytest重构项目 pytest框架介绍 pytest标记 pytest参数处理 …

    Python 2023年9月14日
    038
  • np.random.permutation函数

    目录 一:函数介绍 二:实例 2.1 直接处理数组或列表数 2.2 间接处理:不改变原数据(对数组下标的处理) 2.3 实例:鸢尾花数据中对鸢尾花的随机打乱(可以直接用) 一:函数…

    Python 2023年8月1日
    054
  • 荷兰国旗问题与快速排序算法

    原文地址: 荷兰国旗问题 问题描述 给定一个整数数组,给定一个值K,这个值在原数组中一定存在,要求把数组中小于K的元素放到数组的左边,大于K的元素放到数组的右边,等于K的元素放到数…

    Python 2023年10月20日
    028
  • conda常用命令介绍

    ❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关&#8…

    Python 2023年9月9日
    044
  • python中scrapy的middleware是干嘛的_Python爬虫Scrapy框架:Scrapy框架-中间件

    一.中间件中主要有3个函数方法 process_request�:处理请求,默认返回值是None process_response:处理响应,默认返回值是response对象 pr…

    Python 2023年10月6日
    033
  • 如何让你的Python程序,定时定点地去执行任务?

    我们项目中总是避免不了要使用一些定时任务,比如说最近的项目,用户点击报名考试以后需要在考试日期临近的时候推送小程序消息提醒到客户微信上,翻了翻 fastapi 中的实现,虽然方法和…

    Python 2023年11月9日
    042
  • 【Redis】分别从互斥锁与逻辑过期两个方面来解决缓存击穿问题

    文章目录 前言 * 一.什么是缓存击穿 二.基于互斥锁解决缓存击穿 三.基于逻辑过期解决缓存击穿 四.接口测试 五.两者对比 前言 身逢乱世,未雨绸缪 一.什么是缓存击穿 说直白点…

    Python 2023年11月5日
    026
  • 对反游戏外挂技术的思考及实现

    现如今,有很多游戏外挂软件,它们可以修改游戏显示的数据和内部代码,来达到谋取利益的目的。在实现反外挂技术前,我先介绍一下常见的三种外挂:1.模拟类外挂:该外挂可以说是最早的外挂了,…

    Python 2023年9月19日
    069
  • python学习之基础内容(二)

    二. NumPy科学计算库 1.Numpy作用 提供了 多维数组、矩阵的常用操作和一些高效的科学计算函数 底层运算通过C语言实现,处理 速度快、效率高,适用于大规模多维数组 可以直…

    Python 2023年8月26日
    037
  • flutter 并不完美的登录完美验证功能

    flutter 并不完美的登录完美验证功能 前言 一、文本输入功能 二、验证提示功能 三、业务部分 总结 前言 在一个APP 中,登录页面做为门户,很多时候,我们都需要写一个完善的…

    Python 2023年11月7日
    041
  • 2022版最新最详细Manim开发环境搭建

    安装前提示 Python版本要求: Python3.7+ 使用 pip 安装时,最好使用镜像,负责可能会因为网络安装失败,因为安装依赖较多且依赖包较大。 以豆瓣源镜像示例: pip…

    Python 2023年10月31日
    061
  • Django中restful风格DRF自定义接口自定义传参文档注释问题

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、restful接口 二、自定义入参的自定义接口 * 1.在视图类下自定义方法,添加action…

    Python 2023年8月6日
    062
  • 【Python基础】推导式

    对序列或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表 或用满足特定条件的元素创建子序列。 1 列表推导式 [表达式 for 变量 in 可迭代对象] 或 [表达式 …

    Python 2023年11月2日
    020
  • Django自定义后台

    个人学习笔记,参考 django 官方文档:https://docs.djangoproject.com/zh-hans/3.2/本文第一时间发表在我的个人博客上,欢迎访问:htt…

    Python 2023年8月4日
    047
  • python爬虫-斗鱼弹幕(asyncore仅供学习参考用)

    文章目录 python编程快速上手(持续更新中…) * [python爬虫热点项目(Flask )](https://blog.csdn.net/u012441595/…

    Python 2023年8月11日
    051
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球