如何用DataFramesMeta.jl(含@chain管道)扩展DataFrame与向量?
问题描述
现有如下Julia中的DataFrame a 和向量 y:
a = DataFrame(t = [0; 0], x = [1, 2]) y = [0.1, 0.2, 0.3]
需要将二者合并得到如下形式的结果,优先使用DataFramesMeta.jl实现,且偏好使用@chain管道:
Row │ t x │ Float64 Int64 ─────┼──────────────── 1 │ 0.1 1 2 │ 0.2 1 3 │ 0.3 1 4 │ 0.1 2 5 │ 0.2 2 6 │ 0.3 2
解决方案
可以通过**交叉连接(cross join)**实现需求,结合DataFramesMeta.jl的@chain管道和@rtransform宏完成,具体代码如下:
using DataFrames, DataFramesMeta a = DataFrame(t = [0; 0], x = [1, 2]) y = [0.1, 0.2, 0.3] result = @chain a begin select(:x) @rtransform :t = y flatten(:t) end
代码说明
select(:x):剔除原DataFrame中无用的t列,仅保留需要重复映射的x列。@rtransform :t = y:为每一行的x绑定包含所有y元素的数组列t,此时t列是嵌套结构。flatten(:t):将嵌套的t列展开为多行,每个数组元素对应一行,同时保留对应的x值,最终生成目标格式的DataFrame。
内容的提问来源于stack exchange,提问作者Pascal
相关产品推荐
相关产品推荐

