PySpark:连接具有“Struc”数据类型的两列--> 错误:由于数据类型不匹配而无法解析

松子0

我在 PySpark 中有一个数据表,其中包含数据类型为“struc”的两列。

请参阅下面的示例数据框:

word_verb                   word_noun
{_1=cook, _2=VB}            {_1=chicken, _2=NN}
{_1=pack, _2=VBN}           {_1=lunch, _2=NN}
{_1=reconnected, _2=VBN}    {_1=wifi, _2=NN}

我想将两列连接在一起,以便我可以对连接的动词和名词块进行频率计数。

我试过下面的代码:

df = df.withColumn('word_chunk_final', F.concat(F.col('word_verb'), F.col('word_noun')))  

但我收到以下错误:

AnalysisException: u"cannot resolve 'concat(`word_verb`, `word_noun`)' due to data type mismatch: input to function concat should have been string, binary or array, but it's [struct<_1:string,_2:string>, struct<_1:string,_2:string>]

我想要的输出表如下。连接的新字段的数据类型为字符串:

word_verb                   word_noun               word_chunk_final
{_1=cook, _2=VB}            {_1=chicken, _2=NN}     cook chicken
{_1=pack, _2=VBN}           {_1=lunch, _2=NN}       pack lunch
{_1=reconnected, _2=VBN}    {_1=wifi, _2=NN}        reconnected wifi 
泡利

你的代码就快到了。

假设您的架构如下:

df.printSchema()
#root
# |-- word_verb: struct (nullable = true)
# |    |-- _1: string (nullable = true)
# |    |-- _2: string (nullable = true)
# |-- word_noun: struct (nullable = true)
# |    |-- _1: string (nullable = true)
# |    |-- _2: string (nullable = true)

您只需要访问_1每一列字段

import pyspark.sql.functions as F

df.withColumn(
    "word_chunk_final", 
    F.concat_ws(' ', F.col('word_verb')['_1'], F.col('word_noun')['_1'])
).show()
#+-----------------+------------+----------------+
#|        word_verb|   word_noun|word_chunk_final|
#+-----------------+------------+----------------+
#|        [cook,VB]|[chicken,NN]|    cook chicken|
#|       [pack,VBN]|  [lunch,NN]|      pack lunch|
#|[reconnected,VBN]|   [wifi,NN]|reconnected wifi|
#+-----------------+------------+----------------+

此外,您应该使用concat_ws("concatenate with separator") 而不是concat将字符串添加在一起,并在它们之间留一个空格。它类似于str.join在 python 中的工作方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

由于数据类型不匹配PySpark无法解析列

来自分类Dev

MySQL无法连接来自具有不同数据类型的不同数据库的列

来自分类Dev

解析xml文件时,由于spark中的类型不匹配而无法解析爆炸

来自分类Dev

在翻新2.0中无法解析具有两种不同数据类型的json

来自分类Dev

使用CDate函数的数据类型不匹配错误

来自分类Dev

C ++不报告数据类型不匹配的错误或警告

来自分类Dev

VBA数据类型不匹配错误13

来自分类Dev

输入的VBA VlookUp无法获取结果,是代码错误还是数据类型不匹配?

来自分类Dev

数据类型不匹配Access 2010

来自分类Dev

使用RND()的数据类型不匹配

来自分类Dev

Jaydata中的数据类型不匹配

来自分类Dev

Access中的数据类型不匹配

来自分类Dev

返回数据类型不匹配

来自分类Dev

数据类型不匹配Access 2010

来自分类Dev

Excel SQL 数据类型不匹配

来自分类Dev

DB连接适配器“数据类型不匹配”

来自分类Dev

如何比较具有不同数据类型组的两列

来自分类Dev

将两列具有不同数据类型的Pandas组合

来自分类Dev

比较具有不同数据类型的两列的最快方法

来自分类Dev

Matlab数组具有不同数据类型的列?

来自分类Dev

创建具有通用数据类型的列?

来自分类Dev

Matlab数组具有不同数据类型的列?

来自分类Dev

具有MPI的派生数据类型

来自分类Dev

Linq具有不同的数据类型

来自分类Dev

具有varchar数据类型的PIVOT

来自分类Dev

具有数据类型的函数

来自分类Dev

具有不同数据类型的 Numpy

来自分类Dev

Spark中发现相同和所需数据类型的“错误:类型不匹配”

来自分类Dev

Spark中发现相同和所需数据类型的“错误:类型不匹配”

Related 相关文章

热门标签

归档