Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在数据帧的多列上应用函数_Apache Spark_Pyspark - Fatal编程技术网

Apache spark 在数据帧的多列上应用函数

Apache spark 在数据帧的多列上应用函数,apache-spark,pyspark,Apache Spark,Pyspark,我有一个30列的数据框。但是我想在3列上应用一个函数。我做过这样的事情: #这是数据帧df的3列,属于StringType 日期列=['date1','date2','date3'] #我的职能 def转换日期(x): 如果x为“”: 返回“” 其他: 返回f.expr(“日期添加到日期('1899-12-30'),cast(x为int))”).cast(StringType()) #想做这样的事吗 对于日期列中的c: df=df.withColumn(c,convert_date(df[c])

我有一个30列的数据框。但是我想在3列上应用一个函数。我做过这样的事情:

#这是数据帧df的3列,属于StringType
日期列=['date1','date2','date3']
#我的职能
def转换日期(x):
如果x为“”:
返回“”
其他:
返回f.expr(“日期添加到日期('1899-12-30'),cast(x为int))”).cast(StringType())
#想做这样的事吗
对于日期列中的c:
df=df.withColumn(c,convert_date(df[c]))

这是实现这一目标的正确方法吗?也许我在这里遗漏了什么。

您的方法很好,但是
convert\u date
函数无法按编写的那样工作。Try:
def convert_date(x):如果x==''else f.expr(…此处的表达式…)返回x
。主要区别在于,不应使用
is
将列与字符串值进行比较。当我更改该值时,出现以下错误“ValueError:无法将列转换为布尔值:在构建数据帧布尔表达式时,请使用“&”表示“and”,使用“|”表示“or”,使用“~”表示“not”