【问题标题】:How to insert value in a column using the lit in Spark dataframe?如何使用 Spark 数据框中的 lit 在列中插入值?
【发布时间】:2020-12-03 06:55:34
【问题描述】:

我有 Spark 数据框。我正在尝试使用lit 在新列中插入值,但没有插入该值。

例子:

我正在尝试以下代码:

df:

+--------------------+----------+---------+
|         Programname|Projectnum|     Drug|
+--------------------+----------+---------+
|Non-Oncology Phar...|SR0480-000|Invokamet|
+--------------------+----------+---------+
from pyspark.sql.functions import lit

df=df.withColumn("CDE_rec_crdt_dt", lit([str(x.CDE_rec_crdt_dt) for x in df_active.select('CDE_rec_crdt_dt').distinct().collect()][0]))

The value of -
[str(x.CDE_rec_crdt_dt) for x in df_active.select('CDE_rec_crdt_dt').distinct().collect()][0] ---'2020-12-03'

期望的输出:

df:

+--------------------+----------+---------+----------------+
|         Programname|Projectnum|     Drug|CDE_rec_crdt_dt | 
+--------------------+----------+---------+----------------+
|Non-Oncology Phar...|SR0480-000|Invokamet|2020-12-03      |
+--------------------+----------+---------+----------------+

【问题讨论】:

  • value is not inserting 是什么意思?你遇到了什么错误?
  • df_active 的值是多少,为什么要收集它?也许您应该加入该数据框?

标签: apache-spark pyspark apache-spark-sql


【解决方案1】:
val = str(df_active.select('CDE_rec_crdt_dt').distinct().collect()[0][0])
df = df.withColumn(
    "CDE_rec_crdt_dt",
    lit(val)
)

【讨论】:

  • 还是一片空白。
  • 你能告诉我print(df_active.select('CDE_rec_crdt_dt').distinct().collect()[0][0])的输出吗?
  • >>''2020-12-03"
  • 或者试试df.crossJoin(df_active.select('CDE_rec_crdt_dt').distinct())
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多