我有一个数据框,需要检查其他2列中的某些条件并迭代更新另一列。基本上,我想用新类别替换Smoke_status列中的NaN。
这是我的代码:
import numpy as np
for i in range(df.shape[0]):
if df['age'][i] < 15 and df['smoking_status'][i] == np.nan:
df['smoking_status'][i] = 'never smoked'
elif df['age'][i] >= 15 and df['smoking_status'][i] == np.nan:
df['smoking_status'][i] = 'occassional smoker'
代码可以运行,但是当我检查更新的表时,仍然没有发现任何变化。任何帮助将不胜感激。
答案 0 :(得分:2)
尝试使用熊猫的矢量化函数,而不要遍历每个问题。它们都更快,并且代码更整洁:
cond = df['smoking_status'].isna()
df.loc[cond, 'smoking_status'] = np.where(df.loc[cond, 'Age'] < 15, 'never smoked', 'occassional smoker')