1. 有两种创建Column 的方式:

      • 通过DataFrame 的列名来创建:

      • 通过Column 表达式来创建:

        1. df.colName+1
        2. 1/df['colName']
    1. .alias(*alias, **kwargs):创建一个新列,它给旧列一个新的名字(或者一组名字,如explode 表达式会返回多列)

      • 它是name()的别名
    • 参数:

      • alias:列的别名
      • metadata:一个字符串,存储在列的metadata 属性中
    • 示例:

      1. df.select(df.age.alias("age2"))
      2. # 结果为: [Row(age2=2), Row(age2=5)]
      3. df.select(df.age.alias("age3",metadata={'max': 99})
      4. ).schema['age3'].metadata['max']
      5. # 结果为: 99
    1. 排序:

      • .asc():创建一个新列,它是旧列的升序排序的结果
      • .desc():创建一个新列,它是旧列的降序排序的结果
    2. .astype(dataType):创建一个新列,它是旧列的数值转换的结果

      • 它是.cast() 的别名
    3. 逻辑操作:返回一个新列,是布尔值。other 为另一Column

      • .bitwiseAND(other):二进制逻辑与
      • :二进制逻辑或
      • .bitwiseXOR(other):二进制逻辑异或
    4. 元素抽取:

      • .getField(name):返回一个新列,是旧列的指定字段组成。

        此时要求旧列的数据是一个StructField(如Row

          • name:一个字符串,是字段名
        • 示例:

      • .getItem(key):返回一个新列,是旧列的指定位置(列表),或者指定键(字典)组成。

        • 参数:

          • key:一个整数或者一个字符串
        • 示例:

          1. df = sc.parallelize([([1, 2], {"key": "value"})]).toDF(["l", "d"])
          2. df.select(df.l.getItem(0), df.d.getItem("key"))
          3. #或者
          4. df.select(df.l[0], df.d["key"])
    5. 判断:

      • .isNotNull():返回一个新列,是布尔值。表示旧列的值是否非null

      • .isNull():返回一个新列,是布尔值。表示旧列的值是否null

      • .isin(*cols):返回一个新列,是布尔值。表示旧列的值是否在cols

        • 参数:

          • cols:一个列表或者元组
        • 示例:

          1. df[df.name.isin("Bob", "Mike")]
          2. df[df.age.isin([1, 2, 3])]
      • like(other):返回一个新列,是布尔值。表示旧列的值是否like other。它执行的是SQLlike 语义

        • 参数:

          • other:一个字符串,是SQL like 表达式
        • 示例:

        • 参数:

          • other:一个字符串,是SQL rlike 表达式
    6. 字符串操作:other 为一个字符串。

      • .contains(other):返回一个新列,是布尔值。表示是否包含other

      • .endswith(other):返回一个新列,是布尔值。表示是否以other 结尾。

        示例:

        1. df.filter(df.name.endswith('ice'))
      • .startswith(other):返回一个新列,是布尔值。表示是否以other 开头。

      • .substr(startPos, length):返回一个新列,它是旧列的子串

        • 参数:

          • startPos:子串开始位置(整数或者Column
          • length:子串长度(整数或者Column
    7. .when(condition, value):返回一个新列。

      • 对条件进行求值,如果满足条件则返回value,如果不满足:

        • 如果有.otherwise() 调用,则返回otherwise 的结果
        • 如果没有.otherwise() 调用,则返回None
      • 参数:

        • condition:一个布尔型的Column 表达式
        • value:一个字面量值,或者一个Column 表达式
      • 示例:

        1. from pyspark.sql import functions as F
        2. df.select(df.name, F.when(df.age > 4, 1).when(df.age < 3, -1).otherwise(0))