pandas - 在 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)
我希望这是有道理的。谢谢你的帮助!
解决方案
欢迎来到堆栈交换。您不太清楚您想要的输出,但我认为您正在尝试做的是在您的df
. 为此,您可以在此处使用groupby
pandas文档的内置方法。
正如@ALollz 所提到的,以下代码将为您提供有关百分比计数所需的所有信息。
counts = df.groupby(['Gender', 'Persons_age'])['No_show'].value_counts(normalize=True)
现在您需要决定如何处理它。您可以遍历打印每一行的数据框,或者您可以找到特定的组合,或者您可以打印出整个内容。
一般来说,寻找内置方法比尝试在 pandas 之外构建函数要好。有很多不同的方法可以做事,检查文档是一个很好的起点。
推荐阅读
- android - 似乎无法让我的适配器将我的列表添加到 recyclerView
- android - OpenGL 纹理到 AHardwareBuffer
- java - Spring Boot 在负载测试(50 个用户)时给出不同的响应
- reactjs - 使用 event.preventDefault 的问题
- python - 如何从 MMF 文件在 python 中加载稀疏矩阵
- cluster-computing - 添加新的 Hazelcast 服务器节点似乎会冻结锁定或解锁几秒钟
- reactjs - 将 lib 导入重新路由到别名
- c# - Polly - 从 HTTP 响应内容评估瞬时故障的策略处理程序
- java - RX Java:具有早期关闭谓词和超时的批处理记录
- c# - c#如何正确序列化一个图标?