python - 将 if else 函数应用于 python / pandas 中的两个字符串列
问题描述
在我的数据框中,我有:
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_”
关于我在这里做错了什么的任何想法?这是我第一次尝试使用函数。
谢谢!
解决方案
这是另一种方法,使用map
.
map_ = {"TallM": "T Male", "SmallF": "Female"}
df['GenderDetails'] = (df['Height'] + df['Sex']).str.strip().map(map_)
Name Sex Height GenderDetails
0 Jackie F Small Female
1 John M Tall T Male
推荐阅读
- php - 如何正确地将日期与 PHP 中的字符串进行比较?
- amazon-s3 - 列出 AWS S3 存储桶中的对象(使用无服务器部署)
- java - 为什么 blueJ 会尝试永远执行我的程序
- c# - 注册表启动主 VS progect 文件 .exe 而不是我的请求
- julia - Julia 非线性最小二乘包中的 Levenberg-Marquardt
- python-3.x - 为什么我的数据没有打印在数据框中?
- python - 存储来自多行的唯一子字符串
- android - 如果产品是部分硬件部分订阅,android/ios 应用程序是否需要使用苹果或谷歌的应用内购买 API?
- spring - SSLHandshakeException Jhipster Okla &LetsEncrypt
- mysql - 从一个表中获取数据以及来自另一个表的连接数据