当前位置: 首页 > 知识库问答 >
问题:

如何在PySpark中对一个spark dataframe中的多列求和?

池永长
2023-03-14
columns = ['col1','col2','col3']
col1   col2   col3   result
 1      2      3       6

共有1个答案

孟正志
2023-03-14

“编辑讲解每一步”

如果有静态列列表,可以这样做:

DF.WithColumn(“result”,col(“col1”)+col(“col2”)+col(“col3”))

[TL;DR,]

结合以上步骤,您可以这样做:

from functools import reduce
from operator import add
from pyspark.sql.functions import col

df.na.fill(0).withColumn("result" ,reduce(add, [col(x) for x in df.columns]))

df.na.fill(0)部分用于处理数据中的空值。如果您没有任何空值,您可以跳过它,而是执行以下操作:

 类似资料:
  • 这个问题和这个问题类似:R:两个/多个具有相同变量(列名)的数据帧的Sum列式值,并且以Date列作为引用,但是我的DF有不同的列数、列名,并且没有一个特定的引用列。 我试过合并、加入、通过...等

  • 我想计算PySpark数据帧的两列之间的Jaro Winkler距离。Jaro-Winkler距离可通过所有节点上的pyjarowinkler包获得。 pyjarowinkler的工作原理如下: 输出: 我试图编写一个UDF,将两列作为序列传递,并使用lambda函数计算距离。我是这样做的: 我应该能够在上述函数中传递任意两个字符串列。我得到以下输出: 预期产出: 我怀疑这可能是因为不正确。它包含

  • 我有: 我想要: 似乎在scala中我可以写:< code>df.select($"value。_1 ",$ "值。_2 ",$ "值。_3"),但这在python中是不可能的。 那么有没有好的办法呢?

  • 我正在编写一个udf,它将包含两个dataframe列以及一个额外的参数(常量值),并将向dataframe添加一个新列。我的函数如下所示: 此外,我还做了以下工作来传入多个列: 除非我删除作为函数第三个参数的< code>constant_var,否则现在这种方法不起作用,但是我真的需要这样做。所以我试着做了如下的事情: 和 以上这些都不适合我。我是根据这个和这个stackoverflow帖子得

  • 问题内容: 我有作为元组的股票和持仓清单。买入为正,卖出为负。例: 我如何求和股票头寸,以获取当前持股量? 问题答案: 这个怎么样?您可以阅读有关。

  • 问题内容: 我有一个像这样的元组列表(总是成对出现): 我想找到每对中第一项的总和,即: 如何在Python中执行此操作?目前,我正在遍历列表: 我觉得必须有一种更Python化的方式。 问题答案: 与Python 2.3兼容的版本是 或在最新版本的Python中,请参见此答案。 也会做。