在pyspark中添加数据类型为字符串格式的两列的值

Posted

技术标签:

【中文标题】在pyspark中添加数据类型为字符串格式的两列的值【英文标题】:Adding values of two column which datatypes are in string format in pyspark 【发布时间】:2020-01-17 09:52:12 【问题描述】:

日志文件为json格式,我将数据提取到pyspark的数据框 有两列的值是 int 但列的数据类型是字符串。

cola|colb
45|10
10|20

预期输出

newcol
55
30

但我得到的输出类似于

4510    
1020

我用过的代码

df = .select (F.concat("cola","colb") as newcol).show()

请帮助我如何获得正确的输出。

【问题讨论】:

将列转换为int,然后使用sum+ 添加它们。 concat(concatenate 的缩写)用于添加字符串。 为什么要使用 concat 求和? 【参考方案1】:
>>> from pyspark.sql.functions import col

>>> df.show()
+----+----+
|cola|colb|
+----+----+
|  45|  10|
|  10|  20|
+----+----+

>>> df.printSchema()
root
 |-- cola: string (nullable = true)
 |-- colb: string (nullable = true)

>>> df.withColumn("newcol", col("cola") + col("colb")).show()
+----+----+------+
|cola|colb|newcol|
+----+----+------+
|  45|  10|  55.0|
|  10|  20|  30.0|
+----+----+------+

【讨论】:

以上是关于在pyspark中添加数据类型为字符串格式的两列的值的主要内容,如果未能解决你的问题,请参考以下文章

在 pyspark 中比较不同数据框中的两列,分别为 String 和 Array<string> 类型

如何在特殊条件下添加具有不同行的两列?

在 pyspark 数据框中循环遍历两列时将值添加到新列

如何根据合并的数据框之一的两列的值在熊猫数据框中添加值

获取具有多个枢轴的两列的总和

PYSPARK:如何在 pyspark 数据框中找到两列的余弦相似度?