【发布时间】:2021-06-16 05:02:25
【问题描述】:
有没有一种方法可以在没有循环的情况下将函数应用于 Pandas 数据框中的多个列?例如,给出这个数据框:
df = pd.DataFrame({'id': [1,2,3,4,5,6,7,8,9,10],
'val1': [2,2,np.nan,np.nan,4,1,np.nan,np.nan,np.nan,2],
'val2': [7,0.2,5,8,np.nan,1,0,np.nan,1,1],
})
display(df)
如果我想同时操作val1 和val2 列,我可以执行以下操作。是否有单行代码来代替 for 循环?
f = lambda x: 'ERR' if x < 5 else x
cols = ['val1', 'val2']
for c in cols:
df[c] = df[c].apply(f)
display(df)
【问题讨论】:
标签: python pandas lambda apply