首页 > 其他分享 >pandas-遍历和迭代

pandas-遍历和迭代

时间:2023-09-07 19:12:48浏览次数:39  
标签:遍历 迭代 df DataFrame pd print iterrows pandas row

pandas-遍历和迭代

目录

遍历数据是最常见的一种方式,pandas同样也可以遍历。

iterrows() 或 itertuples():这两个方法用于遍历 DataFrame 的行。

iterrows() 返回一个迭代器,产生索引和行的元组,而 itertuples() 返回一个迭代器,产生包含每行数据的命名元组。

iterrows()

iterrows() 

输出:index:label或label元组行的索引。对于一个 MultiIndex 	则需要一个元组。
     data:Series,行的数据作为Series。
     
interrows为每一行返回一个 Series,所以它不会跨行保留数据类型,因为返回的是Series 执行效率一般
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(20).reshape(4,5),
                  columns=list("abcde"))
print (df)

#    a   b   c   d   e
#0   0   1   2   3   4
#1   5   6   7   8   9
#2  10  11  12  13  14
#3  15  16  17  18  1


for index, row in df.iterrows():
    print(row)
# a    0
# b    1
# c    2
# d    3
# e    4
# Name: 0, dtype: int32
# 0 2
# a    5
# b    6
# c    7
# d    8
# e    9
# Name: 1, dtype: int32
# 5 7
# a    10
# b    11
# c    12
# d    13
# e    14
# Name: 2, dtype: int32
# 10 12
# a    15
# b    16
# c    17
# d    18
# e    19
for index, row in df.iterrows():
    print(row["a"])
#0
#5
#10
#15

for index, row in df.iterrows():
    print(row[["c","d"]],row.e)
#c    2
#d    3
#Name: 0, dtype: int32 4
#c    7
#d    8
#Name: 1, dtype: int32 9
#c    12
#d    13
#Name: 2, dtype: int32 14
#c    17
#d    18
#Name: 3, dtype: int32 19 
 
for index, row in df.iterrows():
    print(row.e)   
#4
#9
#14
#19

itertuples()

DataFrame.itertuples(self, index=True, name='Pandas')  
按行遍历,将DataFrame的每一行迭代为元组。  速度快
import pandas as pd
import numpy as np
df = pd.DataFrame({"code":["python","c+++c#","java++","golang"],
                    "year":[1997,1978,1994,2008],
                    "home":["micsoft","zijiejt","meituan","tengxun"]
})
for row in df.itertuples():
    print(row)
    
Pandas(Index=0, code='python', year=1997, home='micsoft')
Pandas(Index=1, code='c+++c#', year=1978, home='zijiejt')
Pandas(Index=2, code='java++', year=1994, home='meituan')
Pandas(Index=3, code='golang', year=2008, home='tengxun')

for row in df.itertuples():
    print(type(row))
    print(row.code)
    
# <class 'pandas.core.frame.Pandas'>
# python
# <class 'pandas.core.frame.Pandas'>
# c+++c#
# <class 'pandas.core.frame.Pandas'>
# java++
# <class 'pandas.core.frame.Pandas'>
# golang

借助zip()

for tup in zip(df['a'], df['b']):
    print(tup,type(tup[1:]))
import pandas as pd
import numpy as np
df = pd.DataFrame({"code":["python","c+++c#","java++","golang"],
                    "year":[1997,1978,1994,2008],
                    "home":["micsoft","zijiejt","meituan","tengxun"]
})

for tup in zip(df.index, df.code, df.year,df.home):
    print(tup)
    
#(0, 'python', 1997, 'micsoft')
#(1, 'c+++c#', 1978, 'zijiejt')
#(2, 'java++', 1994, 'meituan')
#(3, 'golang', 2008, 'tengxun')

for i in df

# for i in df:  # 并不是遍历行的方式 
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(20).reshape(4,5),
                  columns=list("abcde"))
print (df)
for i in df:
    print(i)
    
#a
#b
#c
#d
#e

备注

iterrows() 和 itertuples() 通常用于在循环中逐行处理 DataFrame 数据。

但是,当处理大型 DataFrame 时,应避免使用它们,因为它们可能会消耗大量内存。

apply():apply() 方法允许你使用自定义函数来应用任何操作到 DataFrame 或 Series 的行或列。

可以在 DataFrame 或 Series 上使用它,以便应用自定义函数到每个元素或列。

import pandas as pd  
  
# 创建一个简单的 DataFrame  
df = pd.DataFrame({'A': [1, 2, 3], 
                   'B': [4, 5, 6], 
                   'C': [7, 8, 9]})  
  
print(df)
# 自定义一个函数,用于打印每行数据  
def print_row(row):  
    row=row.tolist()
    print(row)  
  
# 使用 apply() 方法结合自定义函数来遍历 DataFrame 的每行数据  
df.apply(print_row, axis=1)

#    A  B  C
# 0  1  4  7
# 1  2  5  8
# 2  3  6  9
# [1, 4, 7]
# [2, 5, 8]
# [3, 6, 9]

参考资料

https://blog.csdn.net/qq_57313910/article/details/128080882

https://www.cjavapy.com/article/557/

标签:遍历,迭代,df,DataFrame,pd,print,iterrows,pandas,row
From: https://www.cnblogs.com/tian777/p/17685844.html

相关文章

  • pandas-数据合并和拆分
    pandas-数据合并和拆分目录pandas-数据合并和拆分数据拆分拆分行拆分列按条件拆分数据合并appendmergeconcatjoin参考资料数据集拆分是将一个大型的数据集拆分为多个较小的数据集,可以让数据更加清晰易懂,也方便对单个数据集进行分析和处理。同时,分开的数据集也可以分别应用不同......
  • Python的pandas库:数据分析工具
    在Python的数据分析领域,pandas库是一个非常强大的工具。它提供了一种灵活的数据结构,可以帮助我们轻松地处理和分析数据。本文将详细介绍pandas库的主要功能和用法,并通过具体案例进行说明。安装与导入首先,确保已经安装了pandas库。如果尚未安装,可以使用以下命令在Python环境中安装:pi......
  • Python 迭代、可迭代对象、迭代器、生成器总结
    迭代对list、tuple、str等类型的数据使用for...in...的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代可迭代对象不是所有对象都能使用for..in,比如数字10,把可以通过for...in...这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable......
  • 剑指 Offer 33. 二叉搜索树的后序遍历序列
    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:5/\26/\13示例1:输入:[1,6,3,2,5]输出:false示例2:输入:[1,3,2,6,5]输出:truec......
  • Pandas中的to_datetime函数用法
    Pandas中的to_datetime函数用法importdatetimeimportpandasaspdimportnumpyasnp将字符串转换为日期时间:pd.to_datetime('2023-09-06')Timestamp('2023-09-0600:00:00')将多个字符串转换为日期时间:pd.to_datetime(['2023-09-06','2023-09-07'......
  • Java 8 中的 Stream 轻松遍历树形结构
    先创建一个Menu类packagecom.hlt.cdr.translate.utils;importlombok.Builder;importlombok.Data;importjava.util.List;/***Menu**@authorlcry*@date2020/06/0120:36*/@Data@BuilderpublicclassMenu{/***id*/publicIn......
  • Python 遍历读取Word文档全部内容
    importdocxfromdocx.documentimportDocumentfromdocx.tableimport_Cell,Tablefromdocx.oxml.text.paragraphimportCT_Pfromdocx.text.paragraphimportParagraphfromdocx.oxml.tableimportCT_Tblimportpandasaspddoc=docx.Document('test.d......
  • 代码随想录算法训练营第十四天|二叉树的递归法、迭代法
    二叉树的递归遍历(前中后序遍历-递归法与迭代法)递归三部曲:确定递归函数的参数和返回值确定终止条件确定单层递归的逻辑递归法对二叉树进行前中后序遍历(力扣144.145.94.)//前序遍历·递归·LC144_二叉树的前序遍历classSolution{publicList<Integer>preorderTra......
  • 用递归和非递归两种方式实现二叉树的中序遍历
    一、分析中序遍历遍历顺序为:左、根、右。二、递归实现publicclassNode{ publicintvalue;publicNodeleft;publicNoderight;publicNode(intdata){ this.value=data;}}publicvoidinOrderRecur(Nodehead){ if(head==null){ return;}i......
  • 树的遍历——迭代
    /*中序遍历*/classSolution{publicList<Integer>inorderTraversal(TreeNoderoot){List<Integer>list=newArrayList<>();Deque<TreeNode>stack=newLinkedList<>();while(root!=null||!stack.isEmpty())......