Предположим, у меня есть 3 фрейма данных. Один такой DataFrame имеет имя столбца, которого нет в двух других.
using DataFrames
df1 = DataFrame([['a', 'b', 'c'], [1, 2, 3]], ["name", "id"])
df2 = DataFrame([['d', 'e', 'f'], [4, 5, 6]], ["name", "id"])
df3 = DataFrame([['x', 'y', 'z'], [7, 8, 9], [11, 22, 33]], ["name", "id", "num"])
И каждый DataFrame является элементом вектора.
dfs = [df1, df2, df3]
Я хочу объединить все эти DataFrame в один большой DataFrame. Вот что я пробовал:
df = reduce(x -> vcat(x, cols=:union), dfs)
# MethodError: no method matching (::var"#55#56")(::DataFrame, ::DataFrame)
Итак, как мне это сделать в Юлии?
Бонусные баллы: Могу ли я сделать это на базе Юлии, без DataFrames.jl (примечание: df3
имеет больше столбцов, чем другие)?
Поскольку существует множество пакетов Julia, реализующих конструкции, подобные DataFrame, я открыт для решений, использующих пакеты, отличные от DataFrames.jl.
Вот как бы я сделал это в R:
df1 = data.frame(name = c("a", "b", "c"),
id = c(1, 2, 3))
df2 = data.frame(name = c("d", "e", "f"),
id = c(4, 5, 6))
df3 = data.frame(name = c("x", "y", "z"),
id = c(7, 8, 9),
num = c(11, 22, 33))
dfs = list(df1, df2, df3)
library(dplyr)
dplyr::bind_rows(dfs)
и Python 3.7:
import pandas as pd
df1 = pd.DataFrame({"name": ["a", "b", "c"],
"id": [1, 2, 3]})
df2 = pd.DataFrame({"name": ["d", "e", "f"],
"id": [4, 5, 6]})
df3 = pd.DataFrame({"name": ["x", "y", "z"],
"id": [7, 8, 9],
"num": [11, 22, 33]})
dfs = [df1, df2, df3]
pd.concat(dfs)