gpt4 book ai didi

dataframe - 将 DataFrame 的集合组合成一个大的 DataFrame

转载 作者:行者123 更新时间:2023-12-02 02:50:21 30 4
gpt4 key购买 nike

假设我有 3 个 DataFrame。其中一个 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 都是 Vector 的一个元素。

dfs = [df1, df2, df3]

我想将所有这些 DataFrame 组合成一个大 DataFrame。这是我尝试过的:

df = reduce(x -> vcat(x, cols=:union), dfs)
# MethodError: no method matching (::var"#55#56")(::DataFrame, ::DataFrame)

那么,我该如何在 Julia 中做到这一点?

加分项:我可以在没有 DataFrames.jl 的基础 Julia 中完成吗(注意: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)

最佳答案

只是做:

julia> vcat(dfs..., cols=:union)
9×3 DataFrame
│ Row │ name │ id │ num │
│ │ Char │ Int64 │ Int64? │
├─────┼──────┼───────┼─────────┤
│ 1 │ 'a' │ 1 │ missing │
│ 2 │ 'b' │ 2 │ missing │
│ 3 │ 'c' │ 3 │ missing │
│ 4 │ 'd' │ 4 │ missing │
│ 5 │ 'e' │ 5 │ missing │
│ 6 │ 'f' │ 6 │ missing │
│ 7 │ 'x' │ 7 │ 11 │
│ 8 │ 'y' │ 8 │ 22 │
│ 9 │ 'z' │ 9 │ 33 │

julia> reduce(vcat, dfs, cols=:union)
9×3 DataFrame
│ Row │ name │ id │ num │
│ │ Char │ Int64 │ Int64? │
├─────┼──────┼───────┼─────────┤
│ 1 │ 'a' │ 1 │ missing │
│ 2 │ 'b' │ 2 │ missing │
│ 3 │ 'c' │ 3 │ missing │
│ 4 │ 'd' │ 4 │ missing │
│ 5 │ 'e' │ 5 │ missing │
│ 6 │ 'f' │ 6 │ missing │
│ 7 │ 'x' │ 7 │ 11 │
│ 8 │ 'y' │ 8 │ 22 │
│ 9 │ 'z' │ 9 │ 33 │

关于dataframe - 将 DataFrame 的集合组合成一个大的 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62097343/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com