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

在Julia中如何基于Gender列值筛选对应Age子集并统计数量

错误原因说明

  • df.Age, Gender触发未定义错误的原因:该写法会被Julia解析为返回两个独立对象df.Age和全局变量Gender,你没有单独定义过Gender变量,自然报错。要取DataFrame的多列需要写成df[:, [:Age, :Gender]]的格式。
  • 之前combine(groupby(df, :Age), :Gender=>"Male")返回结果不符合预期,是因为分组逻辑完全错误:你需要按Gender(性别)分组,而非按Age(年龄)分组,才能聚合得到不同性别对应的年龄数据和统计值。

正确实现方法

1. 单独筛选不同性别的年龄列表

提取所有男性的年龄:

# 注意==前的点是广播操作符,必须加上才能对整列逐行判断
male_ages = df[df.Gender .== "Male", :Age]

提取所有女性的年龄:

female_ages = df[df.Gender .== "Female", :Age]

执行后male_ages、female_ages就是对应性别的年龄数组,直接调用length(male_ages)就能得到对应性别的人数。

2. 一次性统计所有性别的年龄列表和对应人数

如果你希望用一行代码直接得到聚合结果,可以用分组聚合写法:

result = combine(
    groupby(df, :Gender),
    :Age => (x -> [collect(x)]) => :年龄列表,
    nrow => :总人数
)

用你给出的示例数据执行后,返回的result结构如下:

Gender年龄列表总人数
Male[30, 55, 61, 70]4
Female[24, 21]2

如果只需要统计人数不需要导出年龄列表,可以简化写法:

gender_count = combine(groupby(df, :Gender), nrow => :总人数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:48:03