需要在pyspark中将列表转换为数据框

Posted

技术标签:

【中文标题】需要在pyspark中将列表转换为数据框【英文标题】:Need to convert list to dataframe in pyspark 【发布时间】:2021-11-24 06:36:36 【问题描述】:

我在 Python 中有以下代码,但我需要将其转换为 pyspark,

qm1['c1'] = [x[0] in x[1] for x in zip(qm1['id'], qm1['question'])]
qm1['c1'] = qm1['c1'].astype(str)
qm1a = qm1[(qm1.c1 == 'True')]

这段python代码的输出是

question key id c1
Women 0 omen True
machine 0 mac True

有人可以像我是 Python 初学者一样帮助我吗?

【问题讨论】:

不确定这是否有帮助:***.com/questions/48448473/… 我已经试过了,但是没用 @user3318064 这不是要问的正确问题。请显示您的输入,显示基于此的预期输出,我们将能够创建一个代码来做到这一点。 Pandas 和 PySpark 的工作方式不同,您不能按原样将代码从一个转换为另一个。 【参考方案1】:

这是我的测试测试(因为您的问题不包含任何内容)

df.show()
+--------+---+----+
|question|key|  id|
+--------+---+----+
|   Women|  0|omen|
| machine|  2| mac|
|     foo|  1| bar|
+--------+---+----+

和我创建预期输出的代码:

from pyspark.sql import functions as F

df = df.withColumn("c1", F.col("question").contains(F.col("id")))
df.show()
+--------+---+----+-----+
|question|key|  id|   c1|
+--------+---+----+-----+
|   Women|  0|omen| true|
| machine|  2| mac| true|
|     foo|  1| bar|false|
+--------+---+----+-----+

那么你可以在 c1 上简单地filter

df.where("c1").show()
+--------+---+----+----+
|question|key|  id|  c1|
+--------+---+----+----+
|   Women|  0|omen|true|
| machine|  2| mac|true|
+--------+---+----+----+

【讨论】:

以上是关于需要在pyspark中将列表转换为数据框的主要内容,如果未能解决你的问题,请参考以下文章

将列表转换为 pyspark 数据框

如何在pyspark中将rdd行转换为带有json结构的数据框?

pyspark 在循环中将数组转换为字符串

如何在pyspark中将JSON字符串转换为JSON对象

如何在pyspark中将列转换为行?

在pyspark中将字符串价格值转换为double类型