如何使用 Spark 数据框中的 lit 在列中插入值?

Posted

技术标签:

【中文标题】如何使用 Spark 数据框中的 lit 在列中插入值?【英文标题】:How to insert value in a column using the lit in Spark dataframe? 【发布时间】: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 的值是多少,为什么要收集它?也许您应该加入该数据框? 【参考方案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())

以上是关于如何使用 Spark 数据框中的 lit 在列中插入值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在列中搜索多个字符串并更新单元格值?

如何使用 Pandas 在列中添加值的超链接?

Spark - 如何使用列对数据框中的字符串进行切片[重复]

如何在 pyspark 中对 spark 数据框中的多列求和?

在多个列中搜索

Spark基于其他数据框中的列对数据框中的列进行重复数据删除