dataframe - 如何在 Julia 中将数组的数组转换为 DataFrame?

标签 dataframe julia

我有一个 map 调用,它会产生一行计算值,因此我有一个 Array 行,这些行是 Array 任何,像这样

12-element Array{Array{Any,1},1}:
 Any[2015-09-01T00:00:00, 2016-09-01T00:00:00, 98, 53.1] 
 Any[2015-10-01T00:00:00, 2016-10-01T00:00:00, 92, 58.7] 
 Any[2015-11-01T00:00:00, 2016-11-01T00:00:00, 130, 64.6]
 Any[2015-12-01T00:00:00, 2016-12-01T00:00:00, 135, 67.4]
 Any[2016-01-01T00:00:00, 2017-01-01T00:00:00, 206, 59.2]
 Any[2016-02-01T00:00:00, 2017-02-01T00:00:00, 246, 54.1]
 Any[2016-03-01T00:00:00, 2017-03-01T00:00:00, 254, 53.9]
 Any[2016-04-01T00:00:00, 2017-04-01T00:00:00, 268, 65.7]
 Any[2016-05-01T00:00:00, 2017-05-01T00:00:00, 265, 61.5]
 Any[2016-06-01T00:00:00, 2017-06-01T00:00:00, 303, 52.8]
 Any[2016-07-01T00:00:00, 2017-07-01T00:00:00, 301, 59.1]
 Any[2016-08-01T00:00:00, 2017-08-01T00:00:00, 273, 54.6]

有没有一种简单的方法可以将其转换为具有列名等的DataFrame?如果没有简单的方法,我愿意接受更难的方法 :) 我可以想到必须重新运行 map 四次来提取列并构建 DataFrame 从那些,但对于这样一个看似平凡的操作来说,这听起来像是很多代码......

编辑 我可以像这样将行“转换”为列

map(x -> map(y -> y[x], r), collect(1:4)

其中 r 是上面的表格,所以我想一个解决方案是为 DataFrame 构造函数提供列名。因此我的临时解决方案是

DataFrame(map(x -> map(y -> y[x], r), collect(1:4)), [:a, :b, :c, :d])

最佳答案

julia> df
12-element Array{Array{Any,1},1}:
 Any["2015-09-01T00:00:00", "2016-09-01T00:00:00", 98, 53.1] 
 Any["2015-10-01T00:00:00", "2016-10-01T00:00:00", 92, 58.7] 
 Any["2015-11-01T00:00:00", "2016-11-01T00:00:00", 130, 64.6]
 Any["2015-12-01T00:00:00", "2016-12-01T00:00:00", 135, 67.4]
 Any["2016-01-01T00:00:00", "2017-01-01T00:00:00", 206, 59.2]
 Any["2016-02-01T00:00:00", "2017-02-01T00:00:00", 246, 54.1]
 Any["2016-03-01T00:00:00", "2017-03-01T00:00:00", 254, 53.9]
 Any["2016-04-01T00:00:00", "2017-04-01T00:00:00", 268, 65.7]
 Any["2016-05-01T00:00:00", "2017-05-01T00:00:00", 265, 61.5]
 Any["2016-06-01T00:00:00", "2017-06-01T00:00:00", 303, 52.8]
 Any["2016-07-01T00:00:00", "2017-07-01T00:00:00", 301, 59.1]
 Any["2016-08-01T00:00:00", "2017-08-01T00:00:00", 273, 54.6]

julia> DataFrame(permutedims(Array(DataFrame(map(data,df))), [2, 1]))
12×4 DataFrames.DataFrame
│ Row │ x1                    │ x2                    │ x3  │ x4   │
├─────┼───────────────────────┼───────────────────────┼─────┼──────┤
│ 1   │ "2015-09-01T00:00:00" │ "2016-09-01T00:00:00" │ 98  │ 53.1 │
│ 2   │ "2015-10-01T00:00:00" │ "2016-10-01T00:00:00" │ 92  │ 58.7 │
│ 3   │ "2015-11-01T00:00:00" │ "2016-11-01T00:00:00" │ 130 │ 64.6 │
│ 4   │ "2015-12-01T00:00:00" │ "2016-12-01T00:00:00" │ 135 │ 67.4 │
│ 5   │ "2016-01-01T00:00:00" │ "2017-01-01T00:00:00" │ 206 │ 59.2 │
│ 6   │ "2016-02-01T00:00:00" │ "2017-02-01T00:00:00" │ 246 │ 54.1 │
│ 7   │ "2016-03-01T00:00:00" │ "2017-03-01T00:00:00" │ 254 │ 53.9 │
│ 8   │ "2016-04-01T00:00:00" │ "2017-04-01T00:00:00" │ 268 │ 65.7 │
│ 9   │ "2016-05-01T00:00:00" │ "2017-05-01T00:00:00" │ 265 │ 61.5 │
│ 10  │ "2016-06-01T00:00:00" │ "2017-06-01T00:00:00" │ 303 │ 52.8 │
│ 11  │ "2016-07-01T00:00:00" │ "2017-07-01T00:00:00" │ 301 │ 59.1 │
│ 12  │ "2016-08-01T00:00:00" │ "2017-08-01T00:00:00" │ 273 │ 54.6 │

我认为您的解决方案要好得多...!

关于dataframe - 如何在 Julia 中将数组的数组转换为 DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47290331/

相关文章:

python - + : 'int' and 'str' using Pandas mean 不支持的操作数类型

Python pandas 更改数据框值

Julia:使用维度数组调用 Array()

julia - Julia 1.0 的环境变量

python - 如何在 pandas 数据框中进行 SQL 样式聚合

r - 在 R 中使用合并一个数据框

R - 添加在组内按顺序计数但重复的列

julia - 为什么 Julia 中的 DifferentialEquations 对于这个 ODE 系统给出 "no matching method"错误?

types - Julia:如何避免自动促销类型的变化?

julia - 从 Julia 的本地目录加载模块