如何从记录/行创建DataFrame

时间:2017-05-24 16:41:01

标签: dataframe julia

我的数据结构如下:

records = [("A", 1), ("B", 2), ("C", 3)]

我想要一个像这样的DataFrame

A | 1
B | 2
C | 3

如何在Julia中最有效地实现这一目标?

在python中我会做pandas.DataFrame.from_records(records)

编辑:我正在寻找适用于任意数量列的方法。

1 个答案:

答案 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元素的调用。 firstlast从元组中获取相应的元素,但匿名函数可以从元组中选择任何元素。

<强>更新

对于许多列,以下内容可能更有用:

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  │

这使用了朱莉娅的特征,例如数组理解,字符串插值(如果表达式不清楚则可以查找)