首页 > 解决方案 > 将 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_”

关于我在这里做错了什么的任何想法?这是我第一次尝试使用函数。

谢谢!

标签: pythonpandas

解决方案


这是另一种方法,使用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

推荐阅读