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