如何优雅生成两个DataFrame的所有行组合?
在DataFrames.jl中生成两个DataFrame的笛卡尔积(全行组合)
你可以直接使用DataFrames.jl提供的crossjoin函数,这是实现两个DataFrame全行组合最优雅的方式,完全不需要手动处理每一列:
首先定义你的DataFrame:
using DataFrames a = DataFrame(x1=["a";"b";"c"], y1=1:3) b = DataFrame(x2=["d";"e"], y2=4:5)
执行笛卡尔积操作:
c = crossjoin(a, b)
运行后得到的结果就是你想要的全组合DataFrame:
6×4 DataFrame Row │ x1 x2 y1 y2 │ String String Int64 Int64 ─────┼────────────────────────────── 1 │ a d 1 4 2 │ b d 2 4 3 │ c d 3 4 4 │ a e 1 5 5 │ b e 2 5 6 │ c e 3 5
crossjoin会自动保留两个DataFrame的所有列,并且生成所有行的笛卡尔积,不管你的DataFrame有多少列、多复杂,都能直接适用,完全替代你之前那种繁琐的手动拼接方式。如果需要处理多个DataFrame的笛卡尔积,也可以直接传入多个参数,比如crossjoin(a, b, c)。
内容的提问来源于stack exchange,提问作者Pascal
相关产品推荐
相关产品推荐

