举一个简化的例子,我有一个数据框“ df”,其列为“ col1,col2”,我想在对每列应用一个函数后计算一个按行的最大值:
def f(x):
return (x+1)
max_udf=udf(lambda x,y: max(x,y), IntegerType())
f_udf=udf(f, IntegerType())
df2=df.withColumn("result", max_udf(f_udf(df.col1),f_udf(df.col2)))
因此,如果df:
col1 col2
1 2
3 0
然后
df2:
col1 col2 result
1 2 3
3 0 4
上面的方法似乎无效,并产生“无法评估表达式:PythonUDF#f …”
我绝对肯定“ f_udf”在我的桌子上可以正常工作,而主要问题在于max_udf。
如果不创建额外的列或使用基本的map / reduce,是否可以完全使用数据框和udfs来完成上述操作?我应该如何修改“ max_udf”?
我也尝试过:
max_udf=udf(max, IntegerType())
产生相同的错误。
我还确认了以下作品:
df2=(df.withColumn("temp1", f_udf(df.col1))
.withColumn("temp2", f_udf(df.col2))
df2=df2.withColumn("result", max_udf(df2.temp1,df2.temp2))
为什么我不能一口气做到这些?
我想看到一个概括为任何函数“ f_udf”和“ max_udf”的答案。
要将多列或整行传递给UDF,请使用struct:
from pyspark.sql.functions import udf, struct
from pyspark.sql.types import IntegerType
df = sqlContext.createDataFrame([(None, None), (1, None), (None, 2)], ("a", "b"))
count_empty_columns = udf(lambda row: len([x for x in row if x == None]), IntegerType())
new_df = df.withColumn("null_count", count_empty_columns(struct([df[x] for x in df.columns])))
new_df.show()
返回:
+----+----+----------+
| a| b|null_count|
+----+----+----------+
|null|null| 2|
| 1|null| 1|
|null| 2| 1|
+----+----+----------+
在本章中,我们将了解PySpark在敏捷数据科学中的提取功能的应用。 Spark概述 Apache Spark可以定义为快速实时处理框架。 它进行计算以实时分析数据。 Apache Spark作为流处理系统实时引入,也可以处理批处理。 Apache Spark支持交互式查询和迭代算法。 Spark是用“Scala编程语言”编写的。 PySpark可以被认为是Python与Spark的结合。 PyS
Verity Sense 配有一个按钮,根据使用情况和按下时长具有不同功能。参见下文,了解按钮在不同模式下的功能以及不同颜色 LED 的含义。 按钮功能 打开/关闭传感器 短按按钮可打开传感器。 按住按钮可关闭传感器。 选择训练模式 要选择训练模式,请短按按钮进行切换,直至所需模式旁的 LED 灯亮起。 您可通过短按按钮来查看已锁定的训练模式。侧边的状态 LED 灯在心率模式下亮蓝色,在记录模式下
我正在尝试编写一个函数,如果< code > selection _ Match = = ' No Match ' then < code > DNB = score _ difference 0.02 然而,我返回相同的df,没有任何修改 虽然它应该回来 Lorem ipsum dolor sit amet,consecetur adipiscing elit,sed do eiusmod te
问题内容: 我正在开始使用Python 3在PyQt5中创建GUI。单击按钮后,我要运行“randomint”函数并将返回的整数显示到名为“lcd”的QLCDNumber。 这是我的代码: 我得到的输出: TypeError:参数1具有意外的类型’NoneType’ 如何获得LCD以显示功能“ randomint”的输出? 问题答案: 问题在于,期望使用插槽(Python可调用对象),但是返回。因
Function Composition是使用一个函数的输出作为另一个函数的输入的过程。 如果我们学习composition背后的数学会更好。 在数学中, composition由f{g(x)}表示,其中g()是一个函数,其输出用作另一个函数的输入,即f() 。 如果一个函数的输出类型与第二个函数的输入类型匹配,则可以使用任何两个函数实现函数组合。 我们使用点运算符(。)在Haskell中实现函数
问题内容: 我正在尝试将某些Windows函数(和)用于数据框,但我不知道如何使用它们。 有人可以帮我吗?在Python API文档 中,没有关于它的示例。 具体来说,我正在尝试获取数据框中数字字段的分位数。 我正在使用Spark 1.4.0。 问题答案: 要使用窗口功能,您必须先创建一个窗口。定义与普通SQL几乎相同,这意味着您可以定义顺序,分区或同时定义两者。首先让我们创建一些虚拟数据: 确保
问题内容: 我有一个pyspark数据框为 并且需要按行连接患者姓名,以便获得如下输出: 有人可以帮我有关在pyspark中创建此数据框吗? 提前致谢。 问题答案: 我能想到的最简单的方法是使用
手表有五个按钮,根据使用情况有不同功能。请查看下表了解各个按钮在不同模式中具有的功能。 时间视图和菜单 背光灯 返回 OK 向上/向下 启动背光 在时间视图中,按下查看电池状态符号 长按可锁定按钮和触控显示屏 进入菜单 返回至上一个水平 保留设置不变 取消选择 长按可从菜单返回至时间视图 在时间视图中,长按以开始配对和同步 确认显示屏上所示的选择 长按进入训练准备模式 按下查看有关手表面显示信息的