【问题标题】:spark withcolumn create a column duplicating values from existining columnspark withcolumn 从现有列创建列重复值
【发布时间】:2018-02-24 03:11:39
【问题描述】:

我无法解决这个问题。这是问题陈述 假设我有一个数据框,我想为 b 列值为 foo 的列 c 选择值并创建一个新列 D 并为所有行重复值“3”

+---+----+---+
|  A|   B|  C|
+---+----+---+
|  4|blah|  2|
|  2|    |  3|
| 56| foo|  3|
|100|null|  5|
+---+----+---+

want it to become:
+---+----+---+-----+
|  A|   B|  C|  D  |
+---+----+---+-----+
|  4|blah|  2|  3  |
|  2|    |  3|  3  |
| 56| foo|  3|  3  |
|100|null|  5|  3  |
+---+----+---+-----+

【问题讨论】:

    标签: scala apache-spark dataframe apache-spark-sql


    【解决方案1】:

    您必须在B 列中提取C 列的值,即3foo

    import org.apache.spark.sql.functions._
    val value = df.filter(col("B") === "foo").select("C").first()(0)
    

    然后使用 withColumn 使用该值创建一个新列 D 使用 lit 函数

    df.withColumn("D", lit(value)).show(false)
    

    你应该得到你想要的输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      相关资源
      最近更新 更多