Julia에서 여러 Array의 모든 조합을 가진 DataFrame 만들기

4713 단어 JuliaDataFrame

여러 Array의 모든 조합을 DataFrame으로 변환



Julia에서 DataFrame을 다룰 때
leftjoin을위한 기초로
여러 키의 모든 조합을 가진 DataFrame이 필요했기 때문에 비망으로 기록

환경



Julia: 1.5

하고 싶은 일



A라는 열과 B라는 열을 키로하는 DataFrame이 있다고 가정합니다.
A에는 ["a", "b", "c"]라는 값이 들어갈 수 있다고 가정합니다.
B에는 ["d", "e", "f"]라는 값이 들어가면,
다음과 같이 A, B 열의 모든 조합을 가진 DataFrame을 만듭니다.



코드


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차원 배열로 합니다.


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

방금 만든 튜플 배열을 네임드 튜플 배열로 변환합니다.
배열이므로.를 잊지 말고.
df = DataFrame(data)
methods(DataFrame) 의 실행 결과를 보면 알 수 있지만 DataFrame은 네임드 튜플의 배열을 인수에 취해 초기화할 수 있으므로 위의 프로그램에서 원하는 결과를 얻을 수 있습니다.

참고



Iteration utilities
DataFrame construction from array of tuples

좋은 웹페이지 즐겨찾기