Присоединение DataFrames в Юлии - PullRequest
0 голосов
/ 12 декабря 2018

Я использую v7.0 из DataFrames.jl, и мне было интересно, есть ли способ объединить два DataFrame с таким образом, чтобы все столбцы, общие для двух DataFrame, были объединены, в то время как столбцы междуоба DataFrame s помечены как отсутствующие.

Кажется, что функция join() создает новый ключ для DataFrame.Кажется, что функция vcat не может объединить DataFrame s без одинаковых имен столбцов.

Пример того, что я имел в виду ниже.

Я хочу объединить

df1 = DataFrame(
    A = [1, 1000, 10000, 100000],
    B = [1,2,3,4],
    D = ["N", "M", "I", "J"])
df2 = DataFrame(
    A = [1,2],
    B = repeat(1:2, inner=1),
    C = ["hi","CE"])

таким образом, чтобы я получил

df3 = DataFrame(
    A = [1,1000,10000,100000, 2],
    B = [1,2,3,4,2],
    C = ["hi", missing, missing, missing, "CE"],
    D = ["N", "M", "I", "J", missing]) 

IВы хотите сделать это с большими DataFrame с, поэтому ручное добавление ключей невозможно.

1 Ответ

0 голосов
/ 12 декабря 2018

Я сделал это в Julia v0.6.2 и DataFrames.jl v0.11.7:

join(df1, df2, kind = :outer, on = intersect(names(df1), names(df2)))

Мой вывод:

5×4 DataFrames.DataFrame
│ Row │ A      │ B │ D       │ C       │
├─────┼────────┼───┼─────────┼─────────┤
│ 1   │ 1      │ 1 │ N       │ hi      │
│ 2   │ 1000   │ 2 │ M       │ missing │
│ 3   │ 10000  │ 3 │ I       │ missing │
│ 4   │ 100000 │ 4 │ J       │ missing │
│ 5   │ 2      │ 2 │ missing │ CE      │

Так как он ссылается на имена столбцов df1и df2 вместе, это должно освободить вас от именования ключей вручную.

...