You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python自定义函数无返回值 需返回字典格式分类占比结果

问题根因
  • 自定义函数没有写return返回语句,Python函数如果不显式指定返回值,默认返回None,这是封装后拿不到结果的核心原因
  • 代码里把print()的执行结果赋值给变量,print()仅负责在控制台输出内容,本身的返回值固定为None,无法存储计算得到的占比数据
  • 原函数直接使用全局变量df,没有把数据集作为参数传入,代码可复用性差,换数据集就会报错
修正后代码
def education(df):
    total = sum(df["CHILDNM"])
    # 按EDUC1分类统计对应CHILDNM总和
    n_lt_highschool = sum(df[["EDUC1", "CHILDNM"]].where(df["EDUC1"] == 1, 0)["CHILDNM"])
    n_highschool = sum(df[["EDUC1", "CHILDNM"]].where(df["EDUC1"] == 2, 0)["CHILDNM"])
    n_mt_highschool = sum(df[["EDUC1", "CHILDNM"]].where(df["EDUC1"] == 3, 0)["CHILDNM"])
    n_college = sum(df[["EDUC1", "CHILDNM"]].where(df["EDUC1"] == 4, 0)["CHILDNM"])
    # 按要求构造字典格式返回值
    return {
        "less than high school": n_lt_highschool / total,
        "high school": n_highschool / total,
        "more than high school": n_mt_highschool / total,
        "college": n_college / total
    }
使用说明
  • 调用函数时传入你要处理的DataFrame对象即可,示例:
# 假设你的数据集变量名是df
edu_ratio = education(df)
# 打印结果验证
print(edu_ratio)
  • 执行后edu_ratio就是你预期的字典格式占比结果,结构和示例{ "less than high school" :0.2 , "high school" :0.39 ...}完全一致。

内容的提问来源于stack exchange,提问作者reem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 00:12:16