遍历df并设置另一个列值的更好方法

时间:2019-01-31 17:25:04

标签: python pandas

我想遍历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    

2 个答案:

答案 0 :(得分:1)

不建议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

答案 1 :(得分:1)

如果我没记错的话,那该怎么办?

df['new_column'] = df['t_age'] * df['height']