Python Pandas基于Series判断创建新列时遇ValueError求助
Pandas创建新列时的ValueError问题解决
问题原因
你直接用Python原生的if-else判断Pandas Series对象,导致了报错。t['t']是一个Series,t['t'] > 25会返回一个由布尔值组成的Series,而Python的if语句无法直接判定整个布尔Series的"真假"——它不知道你是要求所有元素都满足条件,还是只要有一个满足,因此抛出ValueError。
正确实现方式
以下三种方法都能实现你的需求,根据场景选择即可:
方法1:使用numpy.where(推荐,效率最高)
这是处理这类条件赋值最常用的方式,适合大数据量场景:
import numpy as np t['Sup25'] = np.where(t['t'] > 25, 1, 0)
方法2:使用Series.apply
适合需要更复杂判断逻辑的场景,逐行处理每个元素:
t['Sup25'] = t['t'].apply(lambda x: 1 if x > 25 else 0)
方法3:布尔Series转整数
利用Pandas中布尔值可以直接转为整数(True=1,False=0)的特性,写法最简洁:
t['Sup25'] = (t['t'] > 25).astype(int)
内容的提问来源于stack exchange,提问作者Ayreon69
相关产品推荐
相关产品推荐

