dataframe - Julia DataFrame - 根据另一列中的值更新一列中的值的首选方法

标签 dataframe julia idioms

我正在尝试学习 Julia 中根据另一列中的值更新一列中的 DataFrame 的最佳方法。我主要使用 R,我可以在其中编写:

library(data.table)

dt <- data.table(A = 1:5, B = 6:10)
# A  B
# ----
# 1  6
# 2  7
# 3  8
# 4  9
# 5  10

dt[A < 3, B := B * 2]
# A  B
# ----
# 1  12
# 2  14
# 3  8
# 4  9
# 5  10

...更新B在哪里 A < 3 ,而且也非常简洁。我发现的唯一 Julia 等效项是:

using DataFrames

df = DataFrame(A = 1:5, B = 6:10)

transform!(df, [:A, :B] => ByRow((a, b) -> a < 3 ? b * 2 : a))

这是唯一的方法吗?它是首选吗?有没有什么包可以让这个更简洁?

最佳答案

目前您可以执行以下操作:

@. df.B = ifelse(df.A < 3, 2*df.B, df.B)

或者这个

df.B = @. ifelse(df.A < 3, 2*df.B, df.B)

或者这个

dfv = view(df, df.A .< 3, :);
@. dfv.B = dfv.B * 2

第三种方法与 data.table 提供的方法类似,但您必须首先单独创建一个 View (data.table 在一个命令中完成的操作)。

第一种方法和第二种方法之间的区别在于 :B 列是就地更新还是替换。

关于dataframe - Julia DataFrame - 根据另一列中的值更新一列中的值的首选方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66586623/

相关文章:

julia - 在 Julia 中,创建一个向量集,并指定该集的类型

arrays - 在 julia script/print() 中用 shell 数组输出格式化的多维数组

f# - 在 F# 中编写这些方法的功能方法

python - 惯用的 Python : `in` keyword on literal

r - 使用 matrixStats::rowMedians 查找每一行的中位数

python - 根据 pandas 列中的有序值从 DataFrame 中选择行

julia - 使用 "where"语法在 Julia 中参数化函数

Kotlin:filterNotNull 用于 Map<K,V?> 中的值

python - 如何检查pandas的过期日期?

python - Pandas dataframe 多重 groupby 过滤