Julia pandas - 如何将数据帧附加在一起

Julia pandas - how to append dataframes together

使用 Julia 1.0 我有大量数据框,我使用 pandas (read_csv) 读入 Julia,我正在寻找一种方法将它们全部附加到一个大数据框中。出于某种原因,"append" 函数无法解决问题。下面是一个简化的例子:

using Pandas 

df = Pandas.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])

df2 = Pandas.DataFrame([[5, 6], [7, 8]], columns=['A', 'B'])

df[:append](df2)  #fails

df.append(df2)    #fails

df[:concat](df2)  #fails

vcat(df,df2)       

最后一步有效,但生成一个 2 元素数组,每个元素都是一个 DataFrame

关于如何将两个数据帧一个堆叠在另一个下面有什么想法吗?

既然你说你有很多数据框,你可以将它们添加到列表中。然后 pd.concat 列表,并将第一个文件的 header (假设它们都具有相同的 header )作为新数据帧的 header 。这将跳过所有数据框中的第一行,因此您不会在那里有一堆 header 行。

dfs = [df, df2]

df3 = pd.DataFrame(pd.concat(dfs), columns=df.columns)

这似乎有效

julia> df = Pandas.DataFrame([[1, 2], [3, 4]], columns=[:A, :B])
   A  B
0  1  2
1  3  4


julia> df2 = Pandas.DataFrame([[5, 6], [7, 8]], columns=[:A, :B])
   A  B
0  5  6
1  7  8


julia> df.pyo[:append](df2, ignore_index = true )
PyObject    A  B
0  1  2
1  3  4
2  5  6
3  7  8

备注:

  • 我不知道这是 Pandas 的东西还是 julia 1.0 PyCall 的东西,但对象似乎在调用方法之前明确需要 .pyo 字段。如果您尝试 df[:append] 它会尝试将其解释为就好像您正在尝试索引 :append: 列一样。尝试做 df[:col3] = 3 看看我的意思
  • 有一个 julia 原生 DataFrames 包。除非你有一些奇怪的 "I have ready made code" 问题,否则不需要使用 Pandas。即便如此,您可能只是通过在 Julia 中通过 Python 层使用 Pandas 来使事情复杂化。

作为参考,这里是 julia DataFrames 中的等价物:

julia> df  = DataFrames.DataFrame( [1:2, 3:4], [:A, :B]);
julia> df2 = DataFrames.DataFrame( [5:6, 7:8], [:A, :B]);
julia> append!(df, df2)
4×2 DataFrames.DataFrame
│ Row │ A │ B │
├─────┼───┼───┤
│ 1   │ 1 │ 3 │
│ 2   │ 2 │ 4 │
│ 3   │ 5 │ 7 │
│ 4   │ 6 │ 8 │