返回介绍

数学基础

统计学习

深度学习

工具

Scala

七、Column

发布于 2023-07-17 23:38:23 字数 7093 浏览 0 评论 0 收藏 0

  1. Column 代表了DataFrame 的一列

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

    • 通过DataFrame 的列名来创建:

      
      
      xxxxxxxxxx
      df.colName df['colName']
    • 通过Column 表达式来创建:

      
      
      xxxxxxxxxx
      df.colName+1 1/df['colName']

7.1 方法

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

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

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

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

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

    • 它是.cast() 的别名
  3. .between(lowerBound, upperBound):创建一个新列,它是一个布尔值。如果旧列的数值在[lowerBound, upperBound](闭区间)之内,则为True

  4. 逻辑操作:返回一个新列,是布尔值。other 为另一Column

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

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

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

      • 参数:

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

        
        
        xxxxxxxxxx
        df = sc.parallelize([Row(r=Row(a=1, b="b"))]).toDF() df.select(df.r.getField("b")) #或者 df.select(df.r.a)
    • .getItem(key):返回一个新列,是旧列的指定位置(列表),或者指定键(字典)组成。

      • 参数:

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

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

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

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

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

      • 参数:

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

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

      • 参数:

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

        
        
        xxxxxxxxxx
        df.filter(df.name.like('Al%'))
    • rlike(other):返回一个新列,是布尔值。表示旧列的值是否rrlike other。它执行的是SQLrlike 语义

      • 参数:

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

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

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

      示例:

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

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

      • 参数:

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

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

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

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

      
      
      xxxxxxxxxx
      from pyspark.sql import functions as F df.select(df.name, F.when(df.age > 4, 1).when(df.age < 3, -1).otherwise(0))
    • .otherwise(value)value 为一个字面量值,或者一个Column 表达式

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文