gpt4 book ai didi

python - 我可以在没有 for 循环的情况下将函数应用于 Pandas 数据框中的多个列吗?

转载 作者:行者123 更新时间:2023-12-04 15:02:40 27 4
gpt4 key购买 nike

有没有一种方法可以在没有循环的情况下将函数应用于 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)

enter image description here

如果我想同时对 val1val2 列进行操作,我可以执行以下操作。是否有单行代码来代替 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)

enter image description here

最佳答案

应用 map

df.assign(**df[cols].applymap(f))

id val1 val2
0 1 ERR 7.0
1 2 ERR ERR
2 3 NaN 5.0
3 4 NaN 8.0
4 5 ERR NaN
5 6 ERR ERR
6 7 NaN ERR
7 8 NaN NaN
8 9 NaN ERR
9 10 ERR ERR

掩码

df.assign(**df[cols].mask(df[cols] < 5, 'ERR'))

id val1 val2
0 1 ERR 7.0
1 2 ERR ERR
2 3 NaN 5.0
3 4 NaN 8.0
4 5 ERR NaN
5 6 ERR ERR
6 7 NaN ERR
7 8 NaN NaN
8 9 NaN ERR
9 10 ERR ERR

关于python - 我可以在没有 for 循环的情况下将函数应用于 Pandas 数据框中的多个列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66697125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com