首页 > 解决方案 > 如何使用 Julia DataFrames 命名由 do-form 转换产生的列?

问题描述

由于某些原因,我必须使用以下do形式(块形式?)DataFrames.transform

df = DataFrame(:a => [i for i in 1:10])

transform(df) do d
  [d[i, :a] * 10 for i in 1:nrow(d)]
end

 Row │ a      x1
     │ Int64  Int64
─────┼──────────────
   1 │     1     10
   2 │     2     20
   3 │     3     30
   . |     .     ..

这一切都很好,但我希望将新专栏称为x1. 除了将其重命名为事后之外,我在文档中看不到明显的方法。有没有一种方法可以使用命名列(甚至可能不止一个?)而不是命名列xn

标签: dataframejulia

解决方案


您可以返回 aDataFrame或 a NamedTuple

df = DataFrame(:a => [i for i in 1:10])

transform(df) do d
  (result=[d[i, :a] * 10 for i in 1:nrow(d)],)
end

transform(df) do d
  DataFrame(result=[d[i, :a] * 10 for i in 1:nrow(d)])
end

推荐阅读