8-Pandas iteration遍历

Pandas iteration遍历

遍历是众多编程语言中必备的一种操作,比如 Python 语言通过 for 循环来遍历列表结构。那么 Pandas 是如何遍历 Series 和 DataFrame 结构呢?我们应该明确,它们的数据结构类型不同的,遍历的方法必然会存在差异。对于 Series 而言,您可以把它当做一维数组进行遍历操作;而像 DataFrame 这种二维数据表结构,则类似于遍历 Python 字典。

在 Pandas 中同样也是使用 for 循环进行遍历。通过for遍历后,Series 可直接获取相应的 value,而 DataFrame 则会获取列标签。示例如下:

import pandas as pd
import numpy as np
N=20
df = pd.DataFrame({'A': pd.date_range(start='2016-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()})
print(df)
print("迭代所有的列标签:")
for col in df:print (col)

输出结果:

            A     x         y       C           D
0  2016-01-01   0.0  0.306298    High   99.538774
1  2016-01-02   1.0  0.350768    High  111.734390
2  2016-01-03   2.0  0.912953     Low   90.404414
3  2016-01-04   3.0  0.553158    High   92.537805
4  2016-01-05   4.0  0.045641  Medium   92.612460
5  2016-01-06   5.0  0.289502    High   94.824675
6  2016-01-07   6.0  0.247479    High   99.026844
7  2016-01-08   7.0  0.648031    High  126.798087
8  2016-01-09   8.0  0.675396     Low  106.342780
9  2016-01-10   9.0  0.599190  Medium   92.860987
10 2016-01-11  10.0  0.394856     Low   98.485523
11 2016-01-12  11.0  0.300833  Medium   87.875087
12 2016-01-13  12.0  0.018943     Low   94.117690
13 2016-01-14  13.0  0.451572     Low  119.475830
14 2016-01-15  14.0  0.972835    High   91.034207
15 2016-01-16  15.0  0.645414    High   89.636694
16 2016-01-17  16.0  0.467082    High   99.775743
17 2016-01-18  17.0  0.108793     Low   78.775024
18 2016-01-19  18.0  0.592192    High  107.170954
19 2016-01-20  19.0  0.568169    High   99.094213
迭代所有的列标签:
A
x
y
C
D

内置迭代方法

如果想要遍历 DataFrame 的每一行,我们下列函数:

  • iterrows():以 (row_index,row) 的形式遍历行;
  • itertuples():使用已命名元组的方式对行遍历。

下面对上述函数做简单的介绍:

1) iterrows()

以键值对的形式遍历 DataFrame 对象,以列标签为键,以对应列的元素为值。

import pandas as pd
import numpy as np
N=20
df = pd.DataFrame({'A': pd.date_range(start='2016-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 key,value in df.iterrows():print (key,value)

输出结果:

0 A    2016-01-01 00:00:00
x                    0.0
y               0.376904
C                   High
D              85.622403
Name: 0, dtype: object
1 A    2016-01-02 00:00:00
x                    1.0
y               0.740229
C                 Medium
D              78.572574
Name: 1, dtype: object
2 A    2016-01-03 00:00:00
x                    2.0
y               0.672089
C                 Medium
D             101.784087
Name: 2, dtype: object
......
Name: 19, dtype: object
2) itertuples

itertuples() 同样将返回一个迭代器,该方法会把 DataFrame 的每一行生成一个元组,示例如下:

import pandas as pd
import numpy as np
N=20
df = pd.DataFrame({'A': pd.date_range(start='2016-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 row in df.itertuples():print (row)

输出结果:

Pandas(Index=0, A=Timestamp('2016-01-01 00:00:00'), x=0.0, y=0.0073833717186708725, C='Medium', D=102.21685856034675)
Pandas(Index=1, A=Timestamp('2016-01-02 00:00:00'), x=1.0, y=0.7570282079756047, C='Medium', D=77.88547775291684)
Pandas(Index=2, A=Timestamp('2016-01-03 00:00:00'), x=2.0, y=0.039159500841185246, C='Medium', D=90.60034318698546)
Pandas(Index=3, A=Timestamp('2016-01-04 00:00:00'), x=3.0, y=0.5777131686110479, C='Medium', D=108.45249228376123)
Pandas(Index=4, A=Timestamp('2016-01-05 00:00:00'), x=4.0, y=0.4726895679114832, C='High', D=102.3053880413406)
Pandas(Index=5, A=Timestamp('2016-01-06 00:00:00'), x=5.0, y=0.9181876349067116, C='High', D=88.77667424669386)
Pandas(Index=6, A=Timestamp('2016-01-07 00:00:00'), x=6.0, y=0.352008513872231, C='Low', D=94.1640236552118)
Pandas(Index=7, A=Timestamp('2016-01-08 00:00:00'), x=7.0, y=0.5722692889700786, C='Medium', D=91.32266564519188)
Pandas(Index=8, A=Timestamp('2016-01-09 00:00:00'), x=8.0, y=0.18340633936165507, C='Medium', D=91.40118820334366)
Pandas(Index=9, A=Timestamp('2016-01-10 00:00:00'), x=9.0, y=0.5822548446901658, C='Medium', D=105.26907848666296)
Pandas(Index=10, A=Timestamp('2016-01-11 00:00:00'), x=10.0, y=0.40705596480000217, C='High', D=85.52555287827161)
Pandas(Index=11, A=Timestamp('2016-01-12 00:00:00'), x=11.0, y=0.9525667200400463, C='High', D=107.35261261096153)
Pandas(Index=12, A=Timestamp('2016-01-13 00:00:00'), x=12.0, y=0.44425664486730154, C='Medium', D=92.55767916353153)
Pandas(Index=13, A=Timestamp('2016-01-14 00:00:00'), x=13.0, y=0.5468369154349298, C='High', D=87.74208234902464)
Pandas(Index=14, A=Timestamp('2016-01-15 00:00:00'), x=14.0, y=0.4727283165059927, C='Low', D=107.5236125991258)
Pandas(Index=15, A=Timestamp('2016-01-16 00:00:00'), x=15.0, y=0.990707163043359, C='Low', D=95.76090795914205)
Pandas(Index=16, A=Timestamp('2016-01-17 00:00:00'), x=16.0, y=0.6243139269960055, C='Low', D=101.45573754665573)
Pandas(Index=17, A=Timestamp('2016-01-18 00:00:00'), x=17.0, y=0.6146066882888525, C='High', D=99.43866726961795)
Pandas(Index=18, A=Timestamp('2016-01-19 00:00:00'), x=18.0, y=0.6001033142743434, C='Low', D=117.15405644081103)
Pandas(Index=19, A=Timestamp('2016-01-20 00:00:00'), x=19.0, y=0.06108299134959061, C='Medium', D=102.41567398727766)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/38155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

介绍两个压测工具pgbench\sysbench,可视化监控工具NMON

性能评估做不好,开会又领导点名叼了。/(ㄒoㄒ)/~~ /(ㄒoㄒ)/~~ /(ㄒoㄒ)/~~ 挨叼了,也要写文章,记录下我的笔记。 写篇文章 对数据库、OS性能的性能评估,需要选择合适的压测工具,给找出数据库的运行瓶颈 pgbench 这是…

AI音乐的何去何从

引言 在过去的一个月里,多个先进的音乐生成大模型相继上线。这些AI模型不仅降低了普通人创作音乐的门槛,还在音乐圈内引发了关于AI是否会彻底颠覆传统音乐创作的广泛讨论。在短暂的兴奋过后,人们开始理性地审视这些AI产品的版权归属问题&…

【图像超分辨率】一个简单的总结

文章目录 图像超分辨率(Image Super-Resolution, ISR)1 什么是图像超分辨率?2 图像超分辨率通常有哪些方法?(1)基于插值的方法(2)基于重建的方法(3)基于学习的方法(LR im…

Leetcode 78 数组子集

题目描述: 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums [1,2,3] 输出&#xff1…

docker拉取Redis

拉取Redis redis的读写分离:https://blog.csdn.net/qq_51076413/article/details/123462448 Java整合Jedis:https://blog.csdn.net/qq_51076413/article/details/123462857 Java整合Redis:https://blog.csdn.net/qq_51076413/article/details…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-46语义分割和数据集

46语义分割和数据集 # 图像分割和实例分割 """ 图像分割将图像划分为若干组成区域,这类问题的方法通常利用图像中像素之间的相关性。 它在训练时不需要有关图像像素的标签信息,在预测时也无法保证分割出的区域具有我们希望得到的语义。 图…

企业im(即时通讯)作为安全专属的移动数字化平台的重要工具

企业IM即时通讯作为安全专属的移动数字化平台的重要工具,正在越来越多的企业中发挥着重要的作用。随着移动技术和数字化转型的发展,企业对于安全、高效的内部沟通和协作工具的需求也越来越迫切。本文将探讨企业IM即时通讯作为安全专属的移动数字化平台的…

JAVA学习笔记-JAVA基础语法-DAY19-File类、递归

第一章 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 1.2 构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(St…

【Science重磅】以纳米级分辨率重建的人类大脑皮层颗粒片段

翻查五月的Science发现一个有意思的项目《A petavoxel fragment of human cerebral cortex reconstructed at nanoscale resolution》由美国哈佛大学Jeff W. Lichtman 和美国谷歌研究中心 Viren Jain 共同合作 据介绍,充分了解人类大脑是如何工作的机理&#xff0c…

[Redis]主从模式

启动主从复制 由于我们只有一台机器,所以我们只能在机器上开多个redis程序来演示不同的机器 因为一个端口号只能被一个进程绑定,所以我们需要修改配置,绑定不同的端口号,并且还要修改工作目录(数据持久化的位置&#…

七天速通javaSE:第六天 对象:类与对象

文章目录 前言一、认识对象1. 编程思想1.1 面向过程1.2 面向对象 2. 面向对象编程(oop) 二、再识方法1. 修饰符2. 参数的传递与赋值2.1 值传递2.2 引用传递 总结: 三、创建与初始化对象1. 类与对象的关系2. 创建与初始化对象 四、构造函数1. …

mac查看服务端口

在macOS上查看当前打开的端口及对应的服务,可以使用以下命令: 使用netstat命令(需要安装netstat,可以通过安装net-tools来获取) netstat -an | grep LISTEN

Debugging using Visual Studio Code

One of the key features of Visual Studio Code is its great debugging support. VS Code’s built-in debugger helps accelerate your edit, compile, and debug loop. Debugger extensions VS Code 内置了对 Node.js 运行时的调试支持,可以调试 JavaScript、TypeScript…

DarkGPT:基于GPT-4-200k设计的人工智能OSINT助手

关于DarkGPT DarkGPT是一款功能强大的人工智能安全助手,该工具基于GPT-4-200k设计并实现其功能,可以帮助广大研究人员针对泄露数据库进行安全分析和数据查询相关的OSINT操作。 工具要求 openai1.13.3 requests python-dotenv pydantic1.10.12 工具安装 …

Echarts地图实现:杭州市困难人数分布【动画滚动播放】

Echarts地图实现:杭州市困难人数分布 实现功能 杭州市地区以及散点图分布结合的形式数据展示动画轮播可进去杭州市下级地区可返回杭州市地图展示 效果预览 实现思路 使用ECharts的地图和散点图功能结合实现地区分布通过动画轮播展示数据变化实现下级地区数据的展…

【Python】已解决ModuleNotFoundError: No module named ‘tensorflow‘

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决ModuleNotFoundError: No module named ‘tensorflow‘ 一、分析问题背景 ModuleNotFoundError: No module named ‘tensorflow’ 是一个常见的错误,通常在Pytho…

汽车电子工程师入门系列——汽车操作系统架构学习研究-AUTOSAR

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

chrome.storage.local.set 未生效

之前chrome.storage.local.set 和 get 一直不起作用 使用以下代码运行成功。 chrome.storage.local.set({ pageState: "main" }).then(() > {console.log("Value is set");});chrome.storage.local.get(["pageState"]).then((result) > …

有了文章生成器,轻易满足你对文章的需求

写文章对于大多数人来说并不轻松,往往一篇文章写作完成是需要消耗一个人的大量时间与精力的,如果想要写的文章特别好,那么还要再花一点时间去进入后期的修改。就没有什么方法让大家轻易的去完成文章写作吗?答案是有的,…

信号与系统、数字信号处理及通信原理课程深度解析与资源推荐

信号与系统、数字信号处理及通信原理课程深度解析与资源推荐 在电子工程、通信技术和计算机科学领域,信号与系统、数字信号处理和通信原理是三门至关重要的课程。它们不仅为学生提供了坚实的理论基础,也为后续的专业学习和工作实践奠定了坚实的基础。本…