python学习——pandas

本文详细介绍了pandas库中用于遍历DataFrame的iterrows、iteritems和itertuples方法。iterrows返回(index, Series)对,不保留行间数据类型;iteritems提供(column name, Series)对,而itertuples生成包含索引的namedtuple,更高效且节省内存。" 123416471,10698390,打造吸引面试官的简历:大四学生春招攻略,"['面试', '程序人生', 'java']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iterrows,iteritems ,itertuples区别

iterrows

Iterate over DataFrame rows as (index, Series) pairs.
迭代(iterate)覆盖整个DataFrame的行中,返回(index, Series)对,以实现对整个Data进行遍历。
官方文档的例子

>>> 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

借鉴官方文档,测试以下代码

>>>df = pd.DataFrame([[1,2.1,3],[4,5,6],[7,8,9]],index = 
['1','2','3'],columns = ['A','B','C'])
>>>df
   A    B  C
1  1  2.1  3
2  4  5.0  6
3  7  8.0  9
>>>a = df.iterrows()
>>>next(a)
('1', A    1.0
B    2.1
C    3.0
Name: 1, dtype: float64)
>>>next(a)[1]
A    4.0
B    5.0
C    6.0
Name: 2, dtype: float64
>>>next(a)[1]
A    7.0
B    8.0
C    9.0
Name: 3, dtype: float64

iterrows生成的一个由(index, Series)对组成的一个迭代器,第一次next(a)时返回第一行,index = 1,Series =

A    4.0
B    5.0
C    6.0

由于DataFrame中2.1的存在,生成的迭代器会将所有value统一为float型,

iteritems

Iterator over (column name, Series) pairs.
与iterrows类似,对整个DataFrame遍历,生成一个由(column name ,Series)对组成的一个迭代器

测试代码如下

>>>df = pd.DataFrame([[1,2.1,3],[4,5,6],[7,8,9]],index = 
['1','2','3'],columns = ['A','B','C'])
>>>df
   A    B  C
1  1  2.1  3
2  4  5.0  6
3  7  8.0  9
>>>b = df.iteritems()
>>>next(b)
('A', 1    1
2    4
3    7
Name: A, dtype: int64)
>>>next(b)[1]
1    2.1
2    5.0
3    8.0
Name: B, dtype: float64
>>>next(b)[1]
1    3
2    6
3    9
Name: C, dtype: int64

官方文档中提到“Because iterrows returns a Series for each row, it does not preserve dtypes across the rows (dtypes are preserved across columns for DataFrames). ”
DataFrame行方向数据格式统一,列方向的数据格式保持不变。

itertuples

Iterate over DataFrame rows as namedtuples, with index value as first element of the tuple.

>>> df = pd.DataFrame({'col1': [1, 2], 'col2': [0.1, 0.2]},
                      index=['a', 'b'])
>>> df
   col1  col2
a     1   0.1
b     2   0.2
>>> for row in df.itertuples():
...     print(row)
...
Pandas(Index='a', col1=1, col2=0.10000000000000001)
Pandas(Index='b', col1=2, col2=0.20000000000000001)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值