Julia DataFrames.jl实现类似Pandas条件筛选的方法问询
DataFrames.jl 等效Pandas筛选、聚合操作的实现方法
有完全等效的实现方案,常用的几类写法如下:
1. 索引式筛选(和Pandas逻辑最贴近)
Julia的DataFrame索引规则为[行筛选条件, 列选择规则],逐元素比较需要加.做广播运算:
# 筛选ColA等于value的所有行,保留全部列,返回DataFrame对象 df[df.ColA .== value, :] # 仅保留ColA列的筛选结果,返回Vector向量(对应Pandas的Series) df[df.ColA .== value, :ColA]
2. 函数式筛选(DataFrames.jl 更推荐的写法)
- 用filter函数
# 筛选ColA等于value的所有行 filter(:ColA => ==(value), df) # 筛选后取ColA列做后续操作 filter(:ColA => ==(value), df).ColA
- 用subset函数
# 筛选ColA等于value的所有行 subset(df, :ColA => ByRow(==(value)))
3. 聚合操作实现
和Pandas类似可以直接链式调用聚合方法,注意统计类方法需要先导入Statistics标准库:
using Statistics # 筛选后ColA列求和 sum(df[df.ColA .== value, :ColA]) # 筛选后ColA列求均值 mean(filter(:ColA => ==(value), df).ColA) # 也可以对筛选后的整表所有数值列做聚合 sum.(eachcol(df[df.ColA .== value, :]))
内容的提问来源于stack exchange,提问作者newtothis
相关产品推荐
相关产品推荐

