gpt4 book ai didi

dataframe - 重命名的区别!并在 Julia 中使用新的 DataFrame 重命名?

转载 作者:行者123 更新时间:2023-12-05 02:19:11 26 4
gpt4 key购买 nike

在 Julia 中构造新的 DataFrame 时,renamerename! 有什么区别吗?我相信一般来说,在修改现有的 DataFrame 时,rename! 是理想的,因为它修改了它的参数而不在内存中生成新对象。

但由于内存中不存在任何对象,rename 似乎是合适的。

using DataFrames
df1 = rename( DataFrame(rand((100,2))), [:x1, :x2], [:x, :y])
df2 = rename!(DataFrame(rand((100,2))), [:x1, :x2], [:x, :y])

# Ideal formulation not using rename (currently no matching method)
df0 = DataFrame(rand((100,2)), [:x, :y])

最佳答案

rename! 形式修改参数数据框,而 rename 版本使用新的列名构造一个新的数据框。由于您正在构建数据框,然后立即重命名其列,因此使用 rename! 更安全、更高效。如果存在对内部数据框的引用,而您不想以可见的方式对其进行修改,那么您会希望使用非突变的 rename 函数。区别可以在这里看到:

julia> df0 = DataFrame(rand((3,2)))
3×2 DataFrames.DataFrame
│ Row │ x1 │ x2 │
├─────┼──────────┼──────────┤
│ 1 │ 0.625971 │ 0.401812 │
│ 2 │ 0.316224 │ 0.208431 │
│ 3 │ 0.331206 │ 0.466665 │

julia> df1 = rename(df0, [:x1, :x2], [:x, :y])
3×2 DataFrames.DataFrame
│ Row │ x │ y │
├─────┼──────────┼──────────┤
│ 1 │ 0.625971 │ 0.401812 │
│ 2 │ 0.316224 │ 0.208431 │
│ 3 │ 0.331206 │ 0.466665 │

julia> df0
3×2 DataFrames.DataFrame
│ Row │ x1 │ x2 │
├─────┼──────────┼──────────┤
│ 1 │ 0.625971 │ 0.401812 │
│ 2 │ 0.316224 │ 0.208431 │
│ 3 │ 0.331206 │ 0.466665 │

julia> df0 === df1
false

julia> df2 = rename!(df0, [:x1, :x2], [:x, :y])
3×2 DataFrames.DataFrame
│ Row │ x │ y │
├─────┼──────────┼──────────┤
│ 1 │ 0.625971 │ 0.401812 │
│ 2 │ 0.316224 │ 0.208431 │
│ 3 │ 0.331206 │ 0.466665 │

julia> df0
3×2 DataFrames.DataFrame
│ Row │ x │ y │
├─────┼──────────┼──────────┤
│ 1 │ 0.625971 │ 0.401812 │
│ 2 │ 0.316224 │ 0.208431 │
│ 3 │ 0.331206 │ 0.466665 │

julia> df0 === df2
true

rename 返回的数据框是一个具有不同列标签的新数据框 - 即 df1 !== df0 - 而 rename 返回的数据框! 是传入的相同数据框,但修改了列名 - 即 df1 === df0。您可能想在 Julia's Discourse forum 上开始讨论关于构造数据框的便捷方法。

关于dataframe - 重命名的区别!并在 Julia 中使用新的 DataFrame 重命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43282160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com