熊猫:为什么应用功能无效?

时间:2019-07-23 13:34:19

标签: pandas pandas-apply

我正在学习Pandas,偶然发现了一个想让我在酒精饮料使用者数据集中创建一个新列(称为合法饮酒者)并用值填充的列True / False:如果消费者年龄大于True,则为True 17,否则为False。

我不知道为什么一个版本的代码可以工作,而另一个版本会引发错误。请问你能帮帮我吗? :)

# Works just fine:
def majority(x):
    if x > 17:
        return True
    else:
        return False

df["legal_drinker"] = df["age"].apply(majority) # new col created

# Doesn't work:
def majority(x):
    if x["age"] > 17:
        return True
    else:
        return False

df["legal_drinker"] = df.apply(majority)

1 个答案:

答案 0 :(得分:0)

第二个函数显式检查您作为参数传递的DataFrame x的['age']列。
但是,df.apply(majority)函数将您的多数函数应用于df DataFrame的每一列。这意味着传入x的{​​{1}}将成为DataFrame的单个列。
当然,单个列没有列majority(x)(或任何其他列),因此解释器找不到它并抛出错误。
如上面的评论所述,实现此目标的一种较短方法是:

['age']