代码之家  ›  专栏  ›  技术社区  ›  Jared

如何在pyspark列表达式中引用名称中带有连字符的列?

  •  2
  • Jared  · 技术社区  · 6 年前

    我有一个类似这样的json文档(请注意,这个模式不在我的控制之下-我无法去掉键中的连字符):

    {
       "col1": "value1",
       "dictionary-a": {
          "col2": "value2"
       }
    }
    

    session.read.json(...) 要将此json读入数据帧(名为“df”),请执行以下操作:

    df = session.read.json('/path/to/json.json')
    

    df2 = df.withColumn("col2", df.dictionary-a.col2)
    

    我得到一个错误:

    AttributeError: 'DataFrame' object has no attribute 'dictionary'
    

    如何在pyspark列表达式中引用名称中带有连字符的列?

    1 回复  |  直到 6 年前
        1
  •  2
  •   pault Tanjin    6 年前

    就像你说的,连字符 df.dictionary-a.col2 df.dictionary - a.col2 .

    相反,你可以使用 pyspark.sql.functions.col pyspark.sql.Column.getItem 通过键访问字典的元素。

    尝试:

    from pyspark.sql.functions import col
    df2 = df.withColumn("col2", col("dictionary-a").getItem("col2"))