可以通过 . 语法提取 DataFrame 中的 name 列向量,正如之前 Section 3struct 的操作那般:

    1. function names_grades1()
    2. df = grades_2020()
    3. df.name
    4. end
    5. names_grades1()
    1. ["Sally", "Bob", "Alice", "Hank"]

    或者,可以像 Array 那样通过 Symbol 或特殊字符索引 DataFrame第二个索引是列索引

    1. function names_grades2()
    2. df = grades_2020()
    3. end
    1. ["Sally", "Bob", "Alice", "Hank"]

    注意, df.namedf[!, :name] 完全相同, 这可以自行验证:

    对于任意 , 例如第二行, 可以使用 第一个索引作为行索引

    1. df = grades_2020()
    2. df[2, :]

    或者创建函数来获取某一行 i

    1. function grade_2020(i::Int)
    2. df = grades_2020()
    3. df[i, :]
    4. grade_2020(2)

    还可以使用 切片 (与 Array 类似)来仅获取 names 列的前两行:

    1. grades_indexing(grades_2020())
    1. ["Sally", "Bob"]
    1. 5.0

    这是可行的,因为 zip 会同时遍历 df.namedf.grade_2020,就像 “拉链” 那样:

    1. df = grades_2020()
    2. collect(zip(df.name, df.grade_2020))
    1. ("Sally", 1.0)
      1. ("Hank", 4.0)

      然而, DataFrameDict 操作仅在元素唯一的情况下可行。 一般情况下,上述条件并不成立,所以需要学习如何对 DataFrame 进行 filter 操作。