返回顶部
首页 > 资讯 > 后端开发 > Python >pandas.DataFrame的for循环迭代的实现
  • 168
分享到

pandas.DataFrame的for循环迭代的实现

pandasDataFramefor循环pandasDataFramefor 2023-02-22 12:02:55 168人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录pandas.DataFrame for循环的应用逐列检索DataFrame.iteritems()逐行检索DataFrame.iterrows()DataFrame.itert

当使用for语句循环(迭代)pandas.DataFrame时,简单的使用for语句便可以取得返回列名,因此使用重复使用for方法,便可以获取每行的值。

以下面的pandas.DataFrame为例。

import pandas as pd

df = pd.DataFrame({'age': [24, 42], 'state': ['NY', 'CA'], 'point': [64, 92]},
                  index=['Alice', 'Bob'])

print(df)
#        age state  point
# Alice   24    NY     64
# Bob     42    CA     92

在此对以下内容进行说明:

  • pandas.DataFrame for循环的应用
  • 逐列检索
    • DataFrame.iteritems()
  • 逐行检索
    • DataFrame.iterrows()
    • DataFrame.itertuples()
  • 检索特定列的值
  • 循环更新值

pandas.DataFrame for循环的应用

当pandas.DataFrame直接使用for循环时,按以下顺序获取列名(列名)。

for column_name in df:
    print(type(column_name))
    print(column_name)
    print('======\n')
# <class 'str'>
# age
# ======
# 
# <class 'str'>
# state
# ======
# 
# <class 'str'>
# point
# ======
# 

调用方法__iter __()。

for column_name in df.__iter__():
    print(type(column_name))
    print(column_name)
    print('======\n')
# <class 'str'>
# age
# ======
# 
# <class 'str'>
# state
# ======
# 
# <class 'str'>
# point
# ======
# 

逐列检索

DataFrame.iteritems()

使用iteritems()方法,您可以一一获取列名称(列名称)和元组(列名称,系列)的每个列的数据(pandas.Series类型)。

pandas.Series可以通过指定索引名称等来检索行的值。

for column_name, item in df.iteritems():
    print(type(column_name))
    print(column_name)
    print('~~~~~~')

    print(type(item))
    print(item)
    print('------')

    print(item['Alice'])
    print(item[0])
    print(item.Alice)
    print('======\n')
# <class 'str'>
# age
# ~~~~~~
# <class 'pandas.core.series.Series'>
# Alice    24
# Bob      42
# Name: age, dtype: int64
# ------
# 24
# 24
# 24
# ======
# 
# <class 'str'>
# state
# ~~~~~~
# <class 'pandas.core.series.Series'>
# Alice    NY
# Bob      CA
# Name: state, dtype: object
# ------
# NY
# NY
# NY
# ======
# 
# <class 'str'>
# point
# ~~~~~~
# <class 'pandas.core.series.Series'>
# Alice    64
# Bob      92
# Name: point, dtype: int64
# ------
# 64
# 64
# 64
# ======
# 

逐行检索

一次检索一行的方法包括iterrows()和itertuples()。 itertuples()更快。

如果只需要特定列的值,则如下所述,指定列并将它们分别在for循环中进行迭代会更快。

DataFrame.iterrows()

通过使用iterrows()方法,可以获得每一行的数据(pandas.Series类型)和行名和元组(索引,系列)。

pandas.Series可以通过指定列名等来检索列的值。

for index, row in df.iterrows():
    print(type(index))
    print(index)
    print('~~~~~~')

    print(type(row))
    print(row)
    print('------')

    print(row['point'])
    print(row[2])
    print(row.point)
    print('======\n')
# <class 'str'>
# Alice
# ~~~~~~
# <class 'pandas.core.series.Series'>
# age      24
# state    NY
# point    64
# Name: Alice, dtype: object
# ------
# 64
# 64
# 64
# ======
# 
# <class 'str'>
# Bob
# ~~~~~~
# <class 'pandas.core.series.Series'>
# age      42
# state    CA
# point    92
# Name: Bob, dtype: object
# ------
# 92
# 92
# 92
# ======

DataFrame.itertuples()

使用itertuples()方法,可以一一获取索引名(行名)和该行数据的元组。元组的第一个元素是索引名称。

默认情况下,返回一个名为Pandas的namedtuple。由于它是namedtuple,因此可以访问每个元素的值。

for row in df.itertuples():
    print(type(row))
    print(row)
    print('------')

    print(row[3])
    print(row.point)
    print('======\n')
# <class 'pandas.core.frame.Pandas'>
# Pandas(Index='Alice', age=24, state='NY', point=64)
# ------
# 64
# 64
# ======
# 
# <class 'pandas.core.frame.Pandas'>
# Pandas(Index='Bob', age=42, state='CA', point=92)
# ------
# 92
# 92
# ======
# 

如果参数name为None,则返回一个普通的元组。

for row in df.itertuples(name=None):
    print(type(row))
    print(row)
    print('------')

    print(row[3])
    print('======\n')
# <class 'tuple'>
# ('Alice', 24, 'NY', 64)
# ------
# 64
# ======
# 
# <class 'tuple'>
# ('Bob', 42, 'CA', 92)
# ------
# 92
# ======

检索特定列的值

上述的iterrows()和itertuples()方法可以检索每一行中的所有列元素,但是如果仅需要特定的列元素,可以使用以下方法。

pandas.DataFrame的列是pandas.Series。

print(df['age'])
# Alice    24
# Bob      42
# Name: age, dtype: int64

print(type(df['age']))
# <class 'pandas.core.series.Series'>

如果将pandas.Series应用于for循环,则可以按顺序获取值,因此,如果指定pandas.DataFrame列并将其应用于for循环,则可以按顺序获取该列中的值。

for age in df['age']:
    print(age)
# 24
# 42

如果使用内置函数zip(),则可以一次收集多列值。

for age, point in zip(df['age'], df['point']):
    print(age, point)
# 24 64
# 42 92

如果要获取索引(行名),使用index属性。如以上示例所示,可以与其他列一起通过zip()获得。

print(df.index)
# Index(['Alice', 'Bob'], dtype='object')

print(type(df.index))
# <class 'pandas.core.indexes.base.Index'>

for index in df.index:
    print(index)
# Alice
# Bob

for index, state in zip(df.index, df['state']):
    print(index, state)
# Alice NY
# Bob CA

循环更新值

iterrows()方法逐行检索值,返回一个副本,而不是视图,因此更改pandas.Series不会更新原始数据。

for index, row in df.iterrows():
    row['point'] += row['age']

print(df)
#        age state  point
# Alice   24    NY     64
# Bob     42    CA     92

at[]选择并处理原始DataFrame中的数据时更新。

for index, row in df.iterrows():
    df.at[index, 'point'] += row['age']

print(df)
#        age state  point
# Alice   24    NY     88
# Bob     42    CA    134

有关at[]的文章另请参考以下连接。

Pandas获取和修改任意位置的值(at,iat,loc,iloc)

请注意,上面的示例使用at[]只是一个示例,在许多情况下,有必要使用for循环来更新元素或基于现有列添加新列,for循环的编写更加简单快捷。

与上述相同的处理。上面更新的对象被进一步更新。

df['point'] += df['age']
print(df)
#        age state  point
# Alice   24    NY    112
# Bob     42    CA    176

可以添加新列。

df['new'] = df['point'] + df['age'] * 2
print(df)
#        age state  point  new
# Alice   24    NY    112  160
# Bob     42    CA    176  260

除了简单的算术运算之外,NumPy函数还可以应用于列的每个元素。以下是平方根的示例。另外,这里,NumPy的功能可以通过pd.np访问,但是,当然可以单独导入NumPy。

df['age_sqrt'] = pd.np.sqrt(df['age'])
print(df)
#        age state  point  new  age_sqrt
# Alice   24    NY    112  160  4.898979
# Bob     42    CA    176  260  6.480741

 对于字符串,提供了用于直接处理列(系列)的字符串方法。下面是转换为小写并提取第一个字符的示例。

df['state_0'] = df['state'].str.lower().str[0]
print(df)
#        age state  point  new  age_sqrt state_0
# Alice   24    NY    112  160  4.898979       n
# Bob     42    CA    176  260  6.480741       c

到此这篇关于pandas.DataFrame的for循环迭代的实现的文章就介绍到这了,更多相关pandas.DataFrame for循环内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: pandas.DataFrame的for循环迭代的实现

本文链接: https://lsjlt.com/news/197120.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • pandas.DataFrame的for循环迭代的实现
    目录pandas.DataFrame for循环的应用逐列检索DataFrame.iteritems()逐行检索DataFrame.iterrows()DataFrame.itert...
    99+
    2023-02-22
    pandas DataFrame for循环 pandas DataFrame for
  • pandas.DataFrame的for循环迭代如何实现
    本篇内容主要讲解“pandas.DataFrame的for循环迭代如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“pandas.DataFrame的for循环迭代如何实现”吧!当使用for...
    99+
    2023-07-05
  • Golang函数的for循环迭代器用法
    作为一门具有高效性和高并发性的编程语言,Golang在函数的设计和实现上面有很多值得我们学习的地方。其中,for循环迭代器的使用就是Golang函数中一个重要的特性。本文将会从以下几个方面来详细介绍Golang函数的for循环迭代器用法。一...
    99+
    2023-05-17
    函数 Golang for循环
  • Python中for循环怎么定义迭代
    本文小编为大家详细介绍“Python中for循环怎么定义迭代”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python中for循环怎么定义迭代”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Python的 for...
    99+
    2023-06-30
  • 详解Python中for循环的定义迭代方法
    目录Python的 for 循环遍历字典range()功能break语句 和continue语句else语句Python的 for 循环 Python 是基于集合的迭代。 for &...
    99+
    2024-04-02
  • java中迭代器和for循环的优劣势有哪些
    这篇文章给大家分享的是有关java中迭代器和for循环的优劣势有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java的实...
    99+
    2023-06-14
  • Python中while无限迭代循环怎么实现
    这篇文章主要讲解了“Python中while无限迭代循环怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中while无限迭代循环怎么实现”吧!前言Python 有 whil...
    99+
    2023-06-30
  • Python中for循环可迭代对象迭代器及生成器源码学习
    目录问题:1. 迭代1.1 可迭代对象Iterable1.2 迭代器Iterator1.3 for循环1.3.1 iter()方法和next()方法1.3.2 iter()和__it...
    99+
    2024-04-02
  • python的切片实例可代替for循环
    #!/usr/bin/env python3 # -*- coding: utf-8 -*- L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] print('L[0:3] =', L[0:...
    99+
    2023-01-31
    切片 实例 python
  • PHP如何实现for循环
    这篇文章主要为大家展示了“PHP如何实现for循环”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“PHP如何实现for循环”这篇文章吧。for循环:如果已经提前确定脚本运行的次数,可以使用for循...
    99+
    2023-06-17
  • Mysql实现for循环遍历
    友情目录 1.具体需求2.代码实现3.文章参考 1.具体需求 num = 1 ids =(sourceSql: select id from table) for id in...
    99+
    2023-09-07
    mysql 数据库 sql
  • Java如何实现for循环
    这篇文章将为大家详细讲解有关Java如何实现for循环,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。public class ForStatement {public&nbs...
    99+
    2023-06-02
  • mysql怎么实现for循环
    MySQL不支持像其他编程语言中的for循环那样直接在查询中使用。但是可以借助存储过程或事件来实现类似的功能。下面分别介绍两种方法:...
    99+
    2024-04-09
    mysql
  • 在matlab中实现for循环的方法
    简单for循环 for循环用来循环处理数据。 例:输出1~100的和 >> clear >> sum = 0; >> for i = 1:10...
    99+
    2024-04-02
  • 怎么在Python中利用for循环对字典进行迭代
    今天就跟大家聊聊有关怎么在Python中利用for循环对字典进行迭代,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python的五大特点是什么python的五大特点:1.简单易学,开...
    99+
    2023-06-14
  • 循环与迭代:Python 高手的必备秘籍
    简介: 循环和迭代是 Python 中用于重复执行代码块的基本结构。它们允许您遍历数据结构(如列表、元组和字典)或执行特定次数的特定操作。 循环: 循环使用 for 语句来遍历可迭代对象(如列表)。语法如下: for item in i...
    99+
    2024-02-17
    循环 迭代 Python 列表 元组 字典
  • MSSQL 循环(游标循环及类似For的循环)
    利用游标循环: DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT * FROM dbo.Table) --查出需要的集合放到游标中 OPEN My_Cursor...
    99+
    2024-04-02
  • JavaScript中的for循环与双重for循环详解
    for循环 for循环就是对数组的元素进行循环。 语法: for (初始化变量; 条件表达式; 迭代语句) {      需要执行的代码块...
    99+
    2024-04-02
  • mysql实现for循环的方法是什么
    在MySQL中,没有直接的for循环语法,但可以使用循环语句和变量来实现类似for循环的功能。以下是一个示例: DELIMITER ...
    99+
    2024-04-09
    mysql
  • Python中怎么实现for循环
    这篇文章将为大家详细讲解有关Python中怎么实现for循环,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。For循环如何在Python中工作Python的for循环通过遍历数组的序列来工作。...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作