目录
3.2 按行遍历 DataFrame.itertuples()
3.2.1 DataFrame.itertuples() 语法
3.2.2 DataFrame.itertuples() 范例
3.3 按列遍历 DataFrame.iteritems()
3.3.1 DataFrame.iteritems() 语法
3.3.2 DataFrame.iteritems() 范例
对于 pandas.DataFrame 有以下三种遍历方法
- iterrows(): 按行遍历,将 DataFrame 的每一行迭代为 (index, data) 对,可以通过data[column_name] 和 data.column_name 对元素进行访问。
- itertuples(): 按行遍历,将 DataFrame 的每一行迭代为元祖,可以通过data[ 列号数值 ] 和 data.column_name 对元素进行访问,不能使用 row[ column_name ]对元素进行访问,比 iterrows() 效率高。
- iteritems():按列遍历,将 DataFrame 的每一列迭代为(label, content)对,可以通过content[ index ] 对元素进行访问。
3. DataFrame 类型的遍历过程
先准备数据
import pandas as pd
import numpy as np
import pymysql
conn=pymysql.connect(host="127.0.0.1",user="root",password="wxf123",database="ivydb")
data=pd.read_sql('''SELECT * FROM human;''', con = conn)
data
生成数据如下

3.1 按行遍历 DataFrame.iterrows()
3.1.1 DataFrame.iterrows() 语法
首先,DataFrame.iterrows() 函数没有参数
其次,DataFrame.iterrows() 返回 Iterable 的 [index,data] 对,可以理解 index 即行名,data 即此行的数据,为 Series 类型。既然是 Iterable 类型的,意味着可以用 next 来逐步读取。
再次,对于读出来的 data,可以通过 data[column_name] 读取具体的某个元素
最后,请注意应该**永远不要修改**您正在迭代的内容。这并不能保证在所有情况下都有效。取决于数据类型,迭代器返回的是一个副本而不是一个视图,如果你视图写入,这样做是没有效果的。
简单说,我建议在所有迭代过程中,都不要有写入过程。
Help on method iterrows in module pandas.core.frame:
iterrows() -> 'Iterable[Tuple[Label, Series]]' method of pandas.core.frame.DataFrame instance
Iterate over DataFrame rows as (index, Series) pairs.
Yields
------
index : label or tuple of label
The index of the row. A tuple for a `MultiIndex`.
data : Series
The data of the row as a Series.
See Also
--------
DataFrame.itertuples : Iterate over DataFrame rows as namedtuples of the values.
DataFrame.items : Iterate over (column name, Series) pairs.
Notes
-----
1. Because ``iterrows`` returns a Series for each row,
it does **not** preserve dtypes across the rows (dtypes are
preserved across columns for DataFrames). For example,
>>> df = pd.DataFrame([[1, 1.5]], columns=['int', 'float'])
>>> row = next(df.iterrows())[1]
>>> row
int 1.0
float 1.5
Name: 0, dtype: float64
>>> print(row['int'].dtype)
float64
>>> print(df['int'].dtype)
int64
To preserve dtypes while iterating over the rows, it is better
to use :meth:`itertuples` which returns namedtuples of the values
and which is generally faster than ``iterrows``.
2. You should **never modify** something you are iterating over.
This is not guaranteed to work in all cases. Depending on the
data types, the iterator returns a c

本文详细介绍了Pandas DataFrame的三种遍历方法:iterrows()、itertuples()和iteritems()。通过实例解析了每种方法的语法、用法及效率差异,并提供了代码范例展示如何按行和按列遍历数据。

2860

被折叠的 条评论
为什么被折叠?



