2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Juliaで複数Arrayの全組み合わせを持つDataFrameを作成

Posted at

複数Arrayの全組み合わせをDataFrameに変換

JuliaでDataFrameを扱う時に
leftjoinするためのベースとして
複数キーの全組み合わせを持つDataFrameが必要だったので備忘として記録

環境

Julia: 1.5

やりたいこと

AというカラムとBというカラムをキーとするDataFrameがあったとします。
Aには、["a", "b", "c"]という値が入りうるとし
Bには、["d", "e", "f"]という値が入るとした時、
以下のような、A、B列の全組み合わせを持つDataFrameを作ります。

image.png

コード

using DataFrames

arr1 = ["a", "b", "c"]
arr2 = ["d", "e", "f"]

v = vec(collect(Base.product(arr1, arr2)))

columns = (:A, :B)
data = NamedTuple{columns}.(v)

df = DataFrame(data)

解説

arr1 = ["a", "b", "c"]
arr2 = ["d", "e", "f"]

v = vec(collect(Base.product(arr1, arr2)))

まずは、2つのArrayの全組み合わせを取得します。
collectまで実行した時点では、Matrixの形式になっているため、vecでタプルの1次元配列にします。

image2.png
columns = (:A, :B)
data = NamedTuple{columns}.(v)

先ほど作成したタプル配列を、ネームドタプルの配列に変換します。
配列なので . を忘れずに。

df = DataFrame(data)

methods(DataFrame)の実行結果を見れば分かりますが、DataFrameはネームドタプルの配列を引数に取って初期化することが出来ますので、上記のプログラムで所望の結果が得られます。

参考

Iteration utilities
DataFrame construction from array of tuples

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?