[Pandas] 数据迭代
df
1.迭代Series
Series本身是一个可迭代的对象,可直接对Series使用for语句来遍历它的值
import pandas as pddf = pd.DataFrame([['liver','E',89,21,24,64],['Arry','C',36,37,37,57],['Ack','A',57,60,18,84],['Eorge','C',93,96,71,78],['Oah','D',65,49,61,86]], columns = ['name','team','Q1','Q2','Q3','Q4'])
# 迭代指定的列
for i in df.name:print(i)# 效果和上面相同
# df.name.values返回array结构数据可用于迭代
for i in df.name.values:print(i)# 输出结果:
# liver
# Arry
# Ack
# Eorge
# Oah
迭代索引和指定的多列,使用python内置的zip函数将其打包为可迭代的zip对象
import pandas as pddf = pd.DataFrame([['liver','E',89,21,24,64],['Arry','C',36,37,37,57],['Ack','A',57,60,18,84],['Eorge','C',93,96,71,78],['Oah','D',65,49,61,86]], columns = ['name','team','Q1','Q2','Q3','Q4'])# 迭代索引和指定的两列
for i, n, q in zip(df.index, df.name, df.Q1):print(i, n, q)# 输出结果:
# 0 liver 89
# 1 Arry 36
# 2 Ack 57
# 3 Eorge 93
# 4 Oah 65
2. df.iterrows()
df.iterrows()生成一个可迭代对象,将DataFrame行作为(索引,行数据)组成的Series数据对进行迭代。在for语句中需要两个变量来承接数据:一个为索引变量,即使索引在迭代中不会使用(这种情况可用useless作为变量名);另一个为数据变量,读取具体列时,可以使用字典的方法和对象属性的方法
df.iterrows()是最常用、最方便的按行迭代方法
import pandas as pd
df = pd.DataFrame([['liver','E',89,21,24,64],['Arry','C',36,37,37,57],['Ack','A',57,60,18,84],['Eorge','C',93,96,71,78],['Oah','D',65,49,61,86]], columns = ['name','team','Q1','Q2','Q3','Q4'])
# 迭代,使用name,Q1数据
for index, row in df.iterrows():print(index, row['name'], row.Q1)# 输出结果:
# 0 liver 89
# 1 Arry 36
# 2 Ack 57
# 3 Eorge 93
# 4 Oah 65
3 df.itertuples()
df.itertuples()生成一个namedtuples类型数据,name默认名为Pandas,可以在参数中指定
与df.iterrows()相比,df.itertuples()运行速度会更快一些,推荐在数据量庞大的情况下优先使用
import pandas as pddf = pd.DataFrame([['liver','E',89,21,24,64],['Arry','C',36,37,37,57],['Ack','A',57,60,18,84],['Eorge','C',93,96,71,78],['Oah','D',65,49,61,86]], columns = ['name','team','Q1','Q2','Q3','Q4'])for row in df.itertuples():print(row)# 输出结果:
# Pandas(Index=0, name='liver', team='E', Q1=89, Q2=21, Q3=24, Q4=64)
# Pandas(Index=1, name='Arry', team='C', Q1=36, Q2=37, Q3=37, Q4=57)
# Pandas(Index=2, name='Ack', team='A', Q1=57, Q2=60, Q3=18, Q4=84)
# Pandas(Index=3, name='Eorge', team='C', Q1=93, Q2=96, Q3=71, Q4=78)
# Pandas(Index=4, name='Oah', team='D', Q1=65, Q2=49, Q3=61, Q4=86)
以下是一些使用方法示例:
import pandas as pddf = pd.DataFrame([['liver','E',89,21,24,64],['Arry','C',36,37,37,57],['Ack','A',57,60,18,84],['Eorge','C',93,96,71,78],['Oah','D',65,49,61,86]], columns = ['name','team','Q1','Q2','Q3','Q4'])# 不包含索引数据
for row in df.itertuples(index=False):print(row)# Pandas(name='liver', team='E', Q1=89, Q2=21, Q3=24, Q4=64)
# Pandas(name='Arry', team='C', Q1=36, Q2=37, Q3=37, Q4=57)
# Pandas(name='Ack', team='A', Q1=57, Q2=60, Q3=18, Q4=84)
# Pandas(name='Eorge', team='C', Q1=93, Q2=96, Q3=71, Q4=78)
# Pandas(name='Oah', team='D', Q1=65, Q2=49, Q3=61, Q4=86)# 自定义name
# namedtuples
for row in df.itertuples(index=False, name='Hudas'):print(row)# Hudas(name='liver', team='E', Q1=89, Q2=21, Q3=24, Q4=64)
# Hudas(name='Arry', team='C', Q1=36, Q2=37, Q3=37, Q4=57)
# Hudas(name='Ack', team='A', Q1=57, Q2=60, Q3=18, Q4=84)
# Hudas(name='Eorge', team='C', Q1=93, Q2=96, Q3=71, Q4=78)
# Hudas(name='Oah', team='D', Q1=65, Q2=49, Q3=61, Q4=86)# 使用数据
for row in df.itertuples():print(row.Index, row.name)# 0 liver
# 1 Arry
# 2 Ack
# 3 Eorge
# 4 Oah
4 df.items()
df.items()和df.iteritems()功能相同,它迭代时返回一个(列名,本列的Series结构数据),实现对列的迭代
如果需要对Series的数据再进行迭代,可嵌套for循环
import pandas as pd
df = pd.DataFrame([['liver','E',89,21,24,64],['Arry','C',36,37,37,57],['Ack','A',57,60,18,84],['Eorge','C',93,96,71,78],['Oah','D',65,49,61,86]], columns = ['name','team','Q1','Q2','Q3','Q4'])# Series取前三个
for label, ser in df.items():print(label)print(ser[:3], end='\n\n')# 输出结果:------------------------------------------------------------------------------
name
0 liver
1 Arry
2 Ack
Name: name, dtype: objectteam
0 E
1 C
2 A
Name: team, dtype: objectQ1
0 89
1 36
2 57
Name: Q1, dtype: int64Q2
0 21
1 37
2 60
Name: Q2, dtype: int64Q3
0 24
1 37
2 18
Name: Q3, dtype: int64Q4
0 64
1 57
2 84
Name: Q4, dtype: int64#----------------------------------------------------------------------------------------
5 按列迭代
除了df.items(),如需要迭代一个DataFrame的列,可以直接对DataFrame迭代,会循环得到列名
import pandas as pddf = pd.DataFrame([['liver','E',89,21,24,64],['Arry','C',36,37,37,57],['Ack','A',57,60,18,84],['Eorge','C',93,96,71,78],['Oah','D',65,49,61,86]], columns = ['name','team','Q1','Q2','Q3','Q4'])# 直接对DataFrame迭代
for column in df:print(column)# 输出结果:
# name
# team
# Q1
# Q2
# Q3
# Q4# 再利用df[列名]的方法迭代列
# 依次取出每个列
for column in df:print(df[column])# 输出结果:------------------------------------------------------------------------------
0 liver
1 Arry
2 Ack
3 Eorge
4 Oah
Name: name, dtype: object
0 E
1 C
2 A
3 C
4 D
Name: team, dtype: object
0 89
1 36
2 57
3 93
4 65
Name: Q1, dtype: int64
0 21
1 37
2 60
3 96
4 49
Name: Q2, dtype: int64
0 24
1 37
2 18
3 71
4 61
Name: Q3, dtype: int64
0 64
1 57
2 84
3 78
4 86
Name: Q4, dtype: int64#----------------------------------------------------------------------------------------# 可对每个列的内容进行迭代:
for column in df:for i in df[column]:print(i)# 输出结果:------------------------------------------------------------------------------
liver
Arry
Ack
Eorge
Oah
E
C
A
C
D
89
36
57
93
65
21
37
60
96
49
24
37
18
71
61
64
57
84
78
86#----------------------------------------------------------------------------------------# 可以迭代指定列
for i in df.name:print(i)# 输出结果:
# liver
# Arry
# Ack
# Eorge
# Oah# 只迭代想要的列
l = ['name','Q1']
cols = df.columns.intersection(l)
for col in cols:print(col)# 输出结果:
# name
# Q1
[Pandas] 数据迭代相关推荐
- Pandas数据分析14——pandas数据框的多层索引
参考书目:<深入浅出Pandas:利用Python进行数据处理与分析> pandas数据框针对高维数据,也有多层索引的办法去应对.多层数据一般长这个样子 可以看到AB两大列,下面又有xy两 ...
- 3-7 pandas数据的读取与存储
数据分析工具pandas 7. 数据的读取与存储 7.1 读操作 7.2 写操作 7.3 JSON格式 7.4 分块读取大文件 Pandas是一个强大的分析结构化数据的工具集,基于NumPy构建,提供 ...
- pandas数据框,统计某列或者某行数据元素的个数
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/sinat_38893241/artic ...
- pandas数据预处理(字段筛选、query函数进行数据筛选、缺失值删除)、seaborn可视化分面图(facet)、seaborn使用Catplot可视化分面箱图(Faceted Boxplot)
pandas数据预处理(字段筛选.query函数进行数据筛选.缺失值删除).seaborn可视化分面图(facet).seaborn使用Catplot可视化分面箱图(Faceted Boxplot) ...
- pandas数据索引之loc、iloc、ix详解及实例
pandas数据索引之loc.iloc.ix详解及实例 先来个总结: loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为&quo ...
- Pandas数据规整
Pandas数据规整 数据分析和建模方面的大量编程工作都是用在数据准备上的,有时候存放在文件或数据库中的数据并不能满足数据处理应用的要求 Pandas提供了一组高级的.灵活的.高效的核心函数和算法,它 ...
- Python之pandas数据加载、存储
Python之pandas数据加载.存储 0. 输入与输出大致可分为三类: 0.1 读取文本文件和其他更好效的磁盘存储格式 2.2 使用数据库中的数据 0.3 利用Web API操作网络资源 1. 读 ...
- 在pandas数据框中选择多个列
本文翻译自:Selecting multiple columns in a pandas dataframe I have data in different columns but I don't ...
- xlsxwriter写行合并_使用xlsxwriter将pandas数据框写入excel并包含“write-rich”字符串格式...
以下是可复制的,并产生所需的输出. import xlsxwriter, pandas as pd workbook = xlsxwriter.Workbook('pandas_with_rich_s ...
最新文章
- 蓝桥杯国赛-数正方形-java
- c primer plus(第五版)读书笔计 第四章(1)
- 10.7 netstat:查看网络状态
- 用cascade删除有约束的表或记录
- 白话Elasticsearch40-深入聚合数据分析之案例实战_Global Aggregation:单个品牌与所有品牌平均价格对比
- mac电脑循环次数多少算新_ARM架构电脑之路,苹果需要从微软Surface ProX中吸取哪些教训?...
- 系统的MAC地址修改
- Springboot中进行日志打印需要的信息
- HTML 显示特殊字符时转义操作
- C++学习之路: 智能指针入门
- 计算机思维论文1万字,计算机思维学论文选题 计算机思维论文题目怎么取
- Windows 95, 98, Me 的界面对比(图集)(原文于2016-03-26发布于贴吧)
- 林子雨大数据技术原理总结
- [软件测试]QQ表情收藏测试用例
- 一份完整的报价单内容
- 数字电路逻辑设计笔记(3):集成逻辑门电路
- AutoLayout -Masonry
- linux 中文帮助文档
- jmeter导入自定义jar包
- 在类树莓派的ARM开发板上组建大数据集群
热门文章
- 今日更新【深圳大学】初试复试资料分享(附考研群)
- volumio怎么连接屏幕_Volumio音频播放系统使用说明
- CCFlow6的公文审批、公文审批单以及公文审批流程
- mysql 股票_如何在交易数据中查询各个版本交易量前三的股票?(MySQL分组排名)...
- 百度 Apollo2.0
- Spring MCV基于注解的控制器
- 微软CRM(企业版)产品介绍
- ALPU加密芯片应用技术解答
- 所有iOS 设备的屏幕尺寸
- 用计算机一级考试考的照片要求,全国计算机等级考试报名须知:如何上传照片...