DataFrame.iterrows的一种用法

import pandas as pd
import numpy as np
help(pd.DataFrame.iterrows)
Help on function iterrows in module pandas.core.frame:

iterrows(self)
    Iterate over DataFrame rows as (index, 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 copy and not a view, and writing
       to it will have no effect.
    
    Returns
    -------
    it : generator
        A generator that iterates over the rows of the frame.
    
    See also
    --------
    itertuples : Iterate over DataFrame rows as namedtuples of the values.
    iteritems : Iterate over (column name, Series) pairs.

运用iterrows()返回的index和row,其中index是行索引,row是包含改行信息的Series的迭代器。运用这个方法,可以一行一行的增加特殊要求的列(前提是首先初始化该特殊要求的列)

xx=np.random.randint(9,size=(6,3))
tests=pd.DataFrame(xx,columns=['one','two','three']);tests
one two three
0 3 0 4
1 1 0 3
2 1 4 4
3 7 3 2
4 7 5 0
5 5 8 8

现在我们想加上一列,这一列的要求如下:如果同行的'one'+'two'+'three'是奇数,则写上奇数,如果是偶数,则写上偶数。

tests['special']='ini'
for index,row in tests.iterrows():
    num=(row.values[:-1]).sum()
    if num%2 :
        row['special']='奇数'
    else:
        row['special']='偶数'
    tests.loc[index]=row          #将Series 迭代器row赋值给tests的index行
tests
one two three special
0 3 0 4 奇数
1 1 0 3 偶数
2 1 4 4 奇数
3 7 3 2 偶数
4 7 5 0 偶数
5 5 8 8 奇数
posted @   JohnYang819  阅读(1179)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示