我对Spark和Python很陌生,所以对于经验丰富的人来说,这可能是显而易见的。
我手动创建了一个列,并希望创建另一个列,其中所有值都是' s。我所采用的课程建议使用lit()函数。但是,我不能为我的生活弄清楚如何。此代码会出现此错误:" TypeError:' Column'对象不可调用"
wordsDF = sqlContext.createDataFrame([('cat',), ('elephant',), ('rat',), ('rat',), ('cat', )], ['word'])
wordsDF.show()
from pyspark.sql.functions import lit, concat
pluralDF = ([(wordsDF.word.lit(),'s',)], ['words', 's'])
pluralDF.show()
(我使用show函数显示结果,以确保我做对了。如果我只运行第1行和第2行,它会显示我的动物列表,但第4行和第5行失败。)
导师给出的代码作为提示是这样的(对于第4行):
pluralDF = wordsDF.<FILL IN>
非常感谢任何帮助。谢谢!
答案 0 :(得分:3)
您也可以使用DataFrame
方法select
和concat函数来完成此操作。
pluralDF = wordsDF.select("*", concat(df['word'], lit('s')).alias("plural"))
答案 1 :(得分:0)
尝试:
pluralDF = wordsDF.withColumn(“ words”,lit('s'))
答案 2 :(得分:0)
尝试以下方法:
import pyspark.sql.functions as F
wordsDF = sqlContext.createDataFrame([('cat',), ('elephant',), ('rat',), ('rat',), ('cat', )], ['word']) \
.withColumns('words', F.lit('s'))
如果要在字符串末尾添加's',请尝试:
import pyspark.sql.functions as F
wordsDF = sqlContext.createDataFrame([('cat',), ('elephant',), ('rat',), ('rat',), ('cat', )], ['word']) \
.withColumns('words', F.lit('s')) \
.withColumns('words', F.concat(F.col('_1'), F.col('words')))