首页 > 解决方案 > 比 iterrows 迭代 df 并设置另一个列值的更好方法

问题描述

我想遍历 df 行并基于两列为其中之一分配一个新值或向新列添加新值。我可以使用 iterrows() 做到这一点,但我已经阅读了不推荐的方法。

数据如下所示:

name   xfactor    t_age    height
Jack    NaN        24      180    
John    NaN        26      178    

我使用这段代码来完成任务:

for i, row in df.iterrows():
    try:
        df.at[i, 't_age'] = row['t_age'] * row['height']
    except SomeException:
        df.at[i, 'xfactor'] = 1

预期输出可能如下所示:

name   xfactor    t_age    height
Jack    NaN       4320     180    
John     1         26      178    

标签: pythonpandas

解决方案


iterrows()的,不推荐。你可以itertuples()改用。

for row in df.itertuples():
        try:
            df.at[row.Index, 't_age'] = row.t_age * row.height
        except SomeException:
            df.at[row.Index, 'xfactor'] = 1

推荐阅读