pandas df.apply 和df.applymap 使用lambda函数加if else语句的差别(注意事项)

现在有一个Python程序需要对数据表里数据进行处理,把大于0的值转换为1,小于或等于0的值为0。
在这里插入图片描述

打算用pandas 的df.apply()方法加lambda函数对整个数据表进行批量转换,但是在使用的时候发现程序报错:

df.apply(lambda x: 1 if x>0 else 0)

错误信息:

ValueError: (‘The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().’, ‘occurred at index A’)

但是直接作用于列又是正常的:

df['A'].apply(lambda x: 0 if x is None else (1 if x>0 else 0))

后来发现是对整个数据表作用时需要改成df.applymap()函数,df.apply()是应用于pd.Series或列或行。

程序改成df.applymap()就可以正常运行了:

df.applymap(lambda x: 1 if x>0 else 0)

程序运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跨境IT全栈工程师

觉得有帮助,赏点鼓励下呀

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值