Pandas(五)–iteration遍历

对于 Series 而言,您可以把它当做一维数组进行遍历操作;而像 DataFrame 这种二维数据表结构,则类似于遍历 Python 字典。

在 Pandas 中通过 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()
})

for col in df:
    print (col)

输出结果:
A
x
y
C
D

遍历 DataFrame 的每一行,有下列函数:

  • 1) iteritems():以键值对 (key,value) 的形式遍历;
  • 2) iterrows():以 (row_index,row) 的形式遍历行;
  • 3) itertuples():使用已命名元组的方式对行遍历。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(4,3),columns=['col1','col2','col3'])
print(df)

输出结果:
       col1      col2      col3
0 -0.319301  0.205636  0.247029
1  0.673788  0.874376  1.286151
2  0.853439  0.543066 -1.759512

1) iteritems()

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

for key,value in df.iteritems():
    print (key,value)

输出结果:
col1
0 -0.319301
1  0.673788
2  0.853439
Name: col1, dtype: float64
col2
0  0.205636
1  0.874376
2  0.543066
Name: col2, dtype: float64
col3
0  0.247029
1  1.286151
2 -1.759512
Name: col3, dtype: float64

2) iterrows()

该方法按行遍历,返回一个迭代器,以行索引标签为键,以每一行数据为值。示例如下:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(3,3),columns = ['col1','col2','col3'])

for row_index,row in df.iterrows():
    print (row_index,row)

输出结果:
0
col1   -0.319301
col2    0.205636
col3    0.247029
Name: 0, dtype: float64
1
col1    0.673788
col2    0.874376
col3    1.286151
Name: 1, dtype: float64
2
col1    0.853439
col2    0.543066
col3   -1.759512
Name: 2, dtype: float64

注意:iterrows() 遍历行,其中 0,1,2 是行索引而 col1,col2,col3 是列索引。

3) itertuples

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

for row in df.itertuples():
    print(row)

输出结果:
Pandas(Index=0, col1=0.253902385555437, col2=0.9846386610838339, col3=0.8814786409138894)
Pandas(Index=1, col1=0.186673672989089, col2=0.5954745800963542, col3=0.0461448862299109)
Pandas(Index=2, col1=0.306629787541209, col2=0.1798421092872353, col3=0.8573031941082285)

迭代返回副本

迭代器返回的是原对象的副本,所以在迭代过程中修改元素值,不会影响原对象,这点需要注意。

for index, row in df.iterrows():
    row['a'] = 15
    print (df)

输出结果:
       col1      col2      col3
0 -0.319301  0.205636  0.247029
1  0.673788  0.874376  1.286151
2  0.853439  0.543066 -1.759512

由上述示例可见,原对象 df没有受到任何影响。

Original: https://blog.csdn.net/weixin_43145427/article/details/124493038
Author: hanscal
Title: Pandas(五)–iteration遍历

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

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

(0)

大家都在看

  • AR人体姿态识别,实现无边界的人机交互

    近年来,AR不断发展,作为一种增强现实技术,给用户带来了虚拟和现实世界的融合体验。但用户已经不满足于单纯地将某件虚拟物品放在现实场景中来感受AR技术,更想用身体姿势来触发某个指令,…

    Python 2023年10月17日
    035
  • Pytorch model.eval()的作用

    使用pytorch训练和预测时会分别使用到以下两行代码: model.train() model.eval() 后来想了解model.eval()的具体作用,在网上查找资料大都是以…

    Python 2023年10月8日
    039
  • Python 实现贪心算法

    一、 算法概述 贪心算法,又称 贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。[1]比如在旅行推销员问题中,如果…

    Python 2023年11月1日
    061
  • pandas之链式索引问题(chained indexing)

    SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame….

    Python 2023年8月19日
    071
  • Python测试框架pytest(03)setup和teardown

    unittest 提供了两个前置方法和两个后置方法。 分别是: setup() setupClass() teardown() teardownClass() pytest 也提供…

    Python 2023年9月11日
    025
  • Python数据分析:删除重复值df.drop_duplicates()

    【小白从小学Python、C、Java】【Python-计算机等级考试二级】【Python-数据分析】Python数据分析删除重复值df.drop_duplicates() 选择题…

    Python 2023年8月7日
    049
  • 深入浅出学习透析Nginx服务器的基本原理和配置指南「初级实践篇 」

    什么是 Nginx? Nginx (Engine X)是一个轻量级的Web服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器、高性能的HTTP服务器,它以高稳定性、…

    Python 2023年10月13日
    044
  • python之测试类

    作者:从未止步… 博客主页:从未止步的博客专栏:和我一起学Python语录:Every day is a second chance行动是理想最高贵的表达,给大家介绍一…

    Python 2023年8月25日
    087
  • Django学习笔记

    Django学习笔记 资料链接 视频链接:https://www.bilibili.com/video/BV1vK4y1o7jH 笔记链接:https://blog.csdn.ne…

    Python 2023年8月6日
    032
  • 垃圾收集器

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年9月30日
    052
  • Android网络请求(2)

    Android网络请求(2) 在android网络开发中,除get请求外常见的还有post、put、delete这三种,接下来我们将详细讲解这三种请求及参数 GET请求 我们使用过…

    Python 2023年10月14日
    038
  • Python机器学习、深度学习库总结(内含大量示例,建议收藏)

    Python机器学习、深度学习库总结(内含大量示例,建议收藏) * – 前言 – python常用机器学习及深度学习库介绍 – 总结与分类 &#…

    Python 2023年8月30日
    045
  • 【原创】FFMPEG录屏入门指南

    最近部门内部在做技术分享交流,需要将内容录制成视频存档。很自然的想到了去网上找一些录屏的软件,试过了几款诸如 屏幕&#x5F55…

    Python 2023年10月21日
    037
  • python下载字体管家_使用pygame制作打地鼠游戏

    使用pygame制作打地鼠游戏 1、运行结果预览 开始界面 第一关 第二关 第三关 第四关 第五关 游戏结束 2、游戏功能介绍 2.1开发环境: python版本:python3….

    Python 2023年9月23日
    062
  • 【4天快速入门Python数据挖掘之第1天】Matplotlib的使用

    🔥一个人走得远了,就会忘记自己为了什么而出发,希望你可以不忘初心,不要随波逐流,一直走下去🎶🦋 欢迎关注🖱点赞👍收藏🌟留言🐾🦄 本文由 程序喵正在路上 原创,CSDN首发!💖 系列…

    Python 2023年8月30日
    048
  • python爬虫之scrapy框架

    在能够使用基础代码实现爬虫效果的基础上。使用scrapy框架会大大的提高我们的效率。那么scrapy框架实现爬虫的流程是什么呢? 如下图: 1、手动完成 –在爬虫器内定…

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