【问题标题】:Understanding with julia dataframes indexing了解 Julia 数据帧索引
【发布时间】:2022-01-02 20:21:20
【问题描述】:

我正在学习 julia,我刚刚发现了这一行:

if(any(mach_df[start_slot:(start_slot + task_setup_time), Symbol(machine)].== 0))

这是什么意思?,我知道 any 是一个函数,如果参数的每个值都为真,则返回真,但我就是不明白括号里面是什么。

问候

【问题讨论】:

    标签: dataframe indexing julia any


    【解决方案1】:

    让我们由内而外地工作:

    • mach_df[start_slot:(start_slot + task_setup_time), Symbol(machine)]start_slot:(start_slot + task_setup_time) 范围和名为Symbol(machine) 的列中选择您的行(Symbol 很可能不需要,但我需要查看您的源代码才能准确告诉您);结果你得到一个向量。
    • 如果 LHS 向量中的值为 0mach_df[start_slot:(start_slot + task_setup_time), Symbol(machine)] .== 0 会为您提供另一个具有 true 的向量。
    • 如果上面生成的向量中的任何值是trueany 部分将返回 true。

    一种更高级(和高效)的编写方式是:

    any(==(0), @view mach_df[start_slot:(start_slot + task_setup_time), Symbol(machine)])
    

    但我不确定您的用例是否需要性能。

    【讨论】:

    • 非常感谢,所以这一行:mach_df = data_set["machines_availability"][:, [Symbol(machine)]],将 mach_df 定义为来自 data_set["machines_availability"] 的机器列,正确的? (data_set 是一个字典)
    • Yes [:, [Symbol(machine)]] 创建一个数据框(不是原始问题中的向量,因为列选择器包含在 [] 中),其中包含一列并在您使用 @ 时选择所有行987654334@ 作为行选择器。通常这个操作会写成select(data_set["machines_availability"], Symbol(machine))
    猜你喜欢
    • 1970-01-01
    • 2019-08-12
    • 2021-05-09
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 2012-12-20
    • 2021-02-02
    • 2019-08-17
    相关资源
    最近更新 更多