首页 > 解决方案 > 在 Pandas 中定义函数

问题描述

我是 Pandas 的新手,我正在网上学习这门课程。我知道有一种方法可以定义一个函数来使这段代码更清晰,但我不确定如何去做。

noshow = len((df[
    (df['Gender'] == 'M') \
    & (df['No_show'] == 'Yes') \
    & (df['Persons_age'] == 'Child')
]))

noshow

有多个性别和多个 No_show 答案和多个人的年龄,我不想为每个人写出代码。

我已经获得了单个函数的代码,但没有获得多次迭代的代码。

def print_noshow_percentage(column_name, value, percentage_text):
    total = (df[column_name] == value).sum()
    noshow = len((df[(df[column_name] == value) & (df['No_show'] == 'Yes')]))
    print(int((noshow / total) * 100), percentage_text)

我希望这是有道理的。谢谢你的帮助!

标签: pandasfunctiondataset

解决方案


欢迎来到堆栈交换。您不太清楚您想要的输出,但我认为您正在尝试做的是在您的df. 为此,您可以在此处使用groupbypandas文档的内置方法。

正如@ALollz 所提到的,以下代码将为您提供有关百分比计数所需的所有信息。

counts = df.groupby(['Gender', 'Persons_age'])['No_show'].value_counts(normalize=True)

现在您需要决定如何处理它。您可以遍历打印每一行的数据框,或者您可以找到特定的组合,或者您可以打印出整个内容。

一般来说,寻找内置方法比尝试在 pandas 之外构建函数要好。有很多不同的方法可以做事,检查文档是一个很好的起点。


推荐阅读