在我的Dataframe中,我有:
Name Sex Height
Jackie F Small
John M Tall
我使用了以下函数来创建基于组合的新列:
def genderfunc(x,y):
if x =='Tall' & y=='M':
return 'T Male'
elif x =='Medium' & y=='M':
return 'Male'
elif x =='Small' & y=='M':
return 'Male'
elif x =='Tall' & y=='F':
return 'T Female'
elif x =='Medium' & y=='F':
return 'Female'
elif x =='Small' & y=='F':
return 'Female'
else:
return y
应用此函数的代码行:
df['GenderDetails'] = df.apply(genderfunc(df['Height'],df['Sex']))
我得到以下信息:
typeerror:无法对dtyped[object]数组和[bool]类型的标量执行“rand\”
你知道我做错了什么吗?这是我第一次尝试使用函数。
谢谢!
4条答案
按热度按时间b4lqfgs41#
你很接近,需要lambda函数
axis=1
因为标量处理使用and
:使用helper dataframe和left join可以实现非循环解决方案:
xsuvu9jc2#
这是另一种方法,使用
map
.edqdpe6u3#
如果性能是一个问题,也可以使用np.select-
lrpiutwd4#
你需要替换
&
与and
.