相关疑难解决方法(0)

什么是'pythonic'相当于函数式编程的'fold'函数?

在Haskell中实现类似以下内容的最惯用方法是什么:

foldl (+) 0 [1,2,3,4,5]
--> 15
Run Code Online (Sandbox Code Playgroud)

或者它在Ruby中的等价物:

[1,2,3,4,5].inject(0) {|m,x| m + x}
#> 15
Run Code Online (Sandbox Code Playgroud)

显然,Python提供了reduce函数,这是fold的实现,完全如上所述,然而,有人告诉我,'pythonic'编程方式是避免使用lambda术语和高阶函数,在可能的情况下更喜欢列表推导.因此,有没有一种首选的方法来折叠Python中的列表或类似列表的结构,而不是reduce函数,或者是reduce实现这一目的的惯用方法?

python reduce functional-programming list fold

108
推荐指数
6
解决办法
8万
查看次数

在Spark Dataframe中的列列表中添加一列rowums

我有一个包含多个列的Spark数据帧.我想在数据帧上添加一列,它是一定数量的列的总和.

例如,我的数据如下所示:

ID var1 var2 var3 var4 var5
a   5     7    9    12   13
b   6     4    3    20   17
c   4     9    4    6    9
d   1     2    6    8    1
Run Code Online (Sandbox Code Playgroud)

我想要添加一列来汇总特定列的行:

ID var1 var2 var3 var4 var5   sums
a   5     7    9    12   13    46
b   6     4    3    20   17    50
c   4     9    4    6    9     32
d   1     2    6    8    10    27
Run Code Online (Sandbox Code Playgroud)

我知道如果您知道要添加的特定列,可以将列添加到一起:

val newdf = df.withColumn("sumofcolumns", df("var1") + df("var2"))
Run Code Online (Sandbox Code Playgroud)

但是可以传递列名列表并将它们一起添加吗?基于这个答案基本上是我想要的,但它使用的是python API而不是scala(在PySpark数据框中添加列和作为新列)我觉得这样的事情会起作用: …

scala dataframe apache-spark apache-spark-sql

16
推荐指数
2
解决办法
1万
查看次数