我的数据结构如下:
records = [("A", 1), ("B", 2), ("C", 3)]
我想要一个像这样的DataFrame
A | 1
B | 2
C | 3
如何在Julia中最有效地实现这一目标?
在python中我会做pandas.DataFrame.from_records(records)
。
编辑:我正在寻找适用于任意数量列的方法。
答案 0 :(得分:3)
尝试:
julia> using DataFrames
julia> records = [("A", 1), ("B", 2), ("C", 3)]
julia> DataFrame(x=first.(records),y=last.(records))
3×2 DataFrames.DataFrame
│ Row │ x │ y │
├─────┼─────┼───┤
│ 1 │ "A" │ 1 │
│ 2 │ "B" │ 2 │
│ 3 │ "C" │ 3 │
请注意f.(args)
个调用广播f
所有args元素的调用。 first
和last
从元组中获取相应的元素,但匿名函数可以从元组中选择任何元素。
<强>更新强>
对于许多列,以下内容可能更有用:
julia> n = length(records[1])
julia> DataFrame([[r[i] for r in records] for i=1:n],[Symbol("x$(i)") for i=1:n])
3×2 DataFrames.DataFrame
│ Row │ x1 │ x2 │
├─────┼─────┼────┤
│ 1 │ "A" │ 1 │
│ 2 │ "B" │ 2 │
│ 3 │ "C" │ 3 │
这使用了朱莉娅的特征,例如数组理解,字符串插值(如果表达式不清楚则可以查找)